Clo*_*kex 60 email cron postfix
如何让 crontab 将其作业的输出通过电子邮件发送给我?我有MAILTO=redacted@yahoo.com.au上面的工作,但它不起作用。
我知道我需要使用 Postfix 或 Sendmail 之类的东西,但在我的一生中,我不知道如何实现这一点。我已经搜索并搜索了有关设置 Postfix 的简单指南,但它们都非常复杂,并希望您设置整个服务器来发送和接收电子邮件并了解所有术语(例如,什么是域名用于外发电子邮件?)。
我想要做的就是让 crontab 给我发电子邮件。为什么这么难??
附加信息:
我的 crontab 文件如下所示:
MAILTO=redacted@yahoo.com.au
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync
Run Code Online (Sandbox Code Playgroud)
更多附加信息:
的输出 ps -ef | grep '[s]endmail'
root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections
Run Code Online (Sandbox Code Playgroud)
我确信 cron 正在工作,但echo Test | mail -s Test redacted@yahoo.com.au无论如何我正在测试邮件命令。
Clo*_*kex 46
最后我用了sSMTP. 它远比Postfixor简单得多,sendmail并且可以出色地完成工作。
为了将来参考,以下是如何将 sSMTP 与 Yahoo Mail 一起使用(别担心,它远没有看起来那么复杂):
使用 Synaptic 下载 ssmtp。或者,您可以运行sudo apt-get install ssmtp.
在/etc/ssmtp/ssmtp.conf.打开配置文件。
使配置看起来像这样:
root=[yourRealEmail@yahoo.com.au]
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=[yourRealEmail@yahoo.com.au]
AuthPass=[yourRealYahooPassword]
TLS_CA_File=~/cert.pem
Run Code Online (Sandbox Code Playgroud)
使用 OpenSSL 创建 cert.pem 文件。我使用了命令openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes(有关如何使用 OpenSSL 创建自签名证书的更多信息)。你可以把文件粘贴到任何地方,但我只是把它放在 ~/. 无论你把它放在哪里,请确保将TLS_CA_File=ssmtp.conf 中的行指向正确的位置。
打开文件/etc/ssmtp/revaliases并添加以下行:
[yourPCUsername]:[yourRealEmail@yahoo.com.au]:smtp.mail.yahoo.com:587
Run Code Online (Sandbox Code Playgroud)
如果您以 root 身份运行,我认为您需要添加另一行将您的名字替换为“root”。
就是这样,你可以走了!要进行测试,最简单的方法 (IMO) 是创建一个包含以下内容的文件:
To: [yourRealEmail@yahoo.com.au]
From: "whateverYaWant" <[yourRealEmail@yahoo.com.au]>
Subject: Some Notifying Email
MIME-Version: 1.0
Content-Type: text/plain
Body of your email goes here! Hello world!
Run Code Online (Sandbox Code Playgroud)
保存并关闭文件,然后检查您是否安装了真正的sendmail,运行sendmail -V- 它应该显示“sSMTP”。
最后,运行cat fileWithEmailInIt.txt | sendmail -i -t,然后等待几秒钟(10-30)并检查您的电子邮件!
显然,替换[yourRealEmail@yahoo.com.au]为您的电子邮件(不带括号)和[yourRealYahooPassword]您的 Yahoo Mail 密码(同样,不带括号)。
附加说明 1:如果您在使用 Gmail 时遇到问题,请尝试此答案的选项 1 。
(感谢本 Creasy!)
附加说明 2:如果邮件是从命令行发送而不是通过 crontab 发送,请尝试更改FromLineOverride为NOin /etc/ssmtp/ssmtp.conf。您还可以通过添加Debug=YES来获得更详细的日志记录ssmtp.conf- 额外的日志记录转到/var/log/mail.log.
(感谢Jakub Kukul!)
Oli*_*Oli 18
安装后缀。它比大多数其他包更复杂,但它仍然不复杂。
sudo apt-get install postfix
Run Code Online (Sandbox Code Playgroud)
选择“Internet 站点”,然后接受所有默认设置。然后我们只需要停止外部连接,把它变成一个“空客户端”。运行:sudoedit /etc/postfix/main.cf并找到inet_interfaces设置(接近尾声)并将其更改为loopback-only,如下所示:
inet_interfaces = loopback-only
Run Code Online (Sandbox Code Playgroud)
最后用sudo /etc/init.d/postfix restart(重新加载不会做)重新启动 Postfix 。
您现在有一个 Postfix 安装,它不会为外部机器中继电子邮件,它只会接受 127.0.0.1(和 ::1 用于 IPv6)上的连接。
另外,您的 cron 行可能无法正常工作,因为您使用的是非相对路径和带有 Bash 替换的路径。sh不理解~并且它可能没有正确的PATH设置。所以将它们替换为(我只是在猜测实际路径):
1 0 * * * /home/clonkex/Desktop/toskymesh.sh
59 6 * * * /home/clonkex/Desktop/tooptus.sh
0 3 * * * /usr/bin/snapraid sync
Run Code Online (Sandbox Code Playgroud)
如果您的脚本需要从特定目录运行,请确保它们cd进入正确的目录。不要假设它cron会在正确的位置,因为它可能不会。
小智 5
我在 exim4 上运气很好。
sudo apt-get install alpine exim4 mailutils eximon4 spf-tools-perl swaks
Run Code Online (Sandbox Code Playgroud)
(alpine只是我喜欢使用的邮件客户端)
之后我跑了
sudo dpkg-reconfigure exim4-config
Run Code Online (Sandbox Code Playgroud)
并按照提示进行操作。此页面: https: //help.ubuntu.com/community/Exim4也非常有帮助。我花了大约 10 分钟才让它运行起来。
| 归档时间: |
|
| 查看次数: |
147094 次 |
| 最近记录: |