我想在crontab出现错误时使用msmtp而不是postfix发送邮件,但我失败了。
我的操作系统是ubuntu 12.04
这是我的步骤:
apt-get install msmtp-mta #This will auto install msmtp, and symlink /usr/sbin/sendmail
apt-get install mailutils
然后我编辑/etc/msmtprc
文件来配置smtp服务器:
defaults
tls off
account default
host smtp.ym.163.com
auth login
from myuser@mydomain.com
user myuser@mydomain.com
password mypss
logfile /var/log/msmtp.log
aliases /etc/aliases
然后我测试了msmtp,没关系
msmtp -Sd
loaded system configuration file /etc/msmtprc
ignoring user configuration file /root/.msmtprc: no such file or directory
falling back to default account
using account default from /etc/msmtprc
host = smtp.ym.163.com
port = 25
timeout = off
protocol = smtp
domain = localhost
auth = LOGIN
user = myuser@mydomain
password = *
passwordeval = (not set)
ntlmdomain = (not set)
tls = off
tls_starttls = on
tls_trust_file = (not set)
tls_crl_file = (not set)
tls_fingerprint = (not set)
tls_key_file = (not set)
tls_cert_file = (not set)
tls_certcheck = on
tls_force_sslv3 = off
tls_min_dh_prime_bits = (not set)
tls_priorities = (not set)
<-- 220 m199-177.yeah.net ESMTP HMail (1.0)
--> EHLO localhost
<-- 250-m199-177.yeah.net
<-- 250-PIPELINING
<-- 250-SIZE 71680000
<-- 250-ETRN
<-- 250-STARTTLS
<-- 250-AUTH LOGIN PLAIN
<-- 250-AUTH=LOGIN PLAIN
<-- 250-ENHANCEDSTATUSCODES
<-- 250 8BITMIME
--> QUIT
<-- 221 2.0.0 Bye
SMTP server at smtp.ym.163.com (m199-177.yeah.net [123.58.177.199]), port 25:
m199-177.yeah.net ESMTP HMail (1.0)
Capabilities:
SIZE 71680000:
Maximum message size is 71680000 bytes = 68.36 MiB
PIPELINING:
Support for command grouping for faster transmission
ETRN:
Support for RMQS (Remote Message Queue Starting)
STARTTLS:
Support for TLS encryption via the STARTTLS command
AUTH:
Supported authentication methods:
PLAIN LOGIN
This server might advertise more or other capabilities when TLS is active.
下一步修改了/etc/aliases
# See man 5 aliases for format
postmaster: root
root: myuser@mydomain.com
default: myuser@mydomain.com
我可以使用msmtp发送电子邮件。
但是在/var/log/cron.log
中,它出现了错误:
(root) MAIL (mailed 1 byte of output; but got status 0x004e, #012)
怎么了?如何解决问题?谁能帮我一把?
答案 0 :(得分:1)
最后我自己解决了这个问题......
因为我在MAILTO=myemail
文件中写了/etc/crontab
,但我使用crontab -e
添加了crons。所以var MAILTO
不起作用。它还会将邮件发送到root
而不是myemail
,它无法到达地址,因此msmtp会收到错误。
然后我用/etc/aliases
修改了default: myemail
,让所有邮件发送到myemail,然后就可以了。
然后我得到另一个问题,我发现邮件内容不会显示任何utf-8字符,但标题可以。怎么了?如何解决这个问题?
答案 1 :(得分:1)
我有一个非常类似于问题所描述的场景,但是目前的答案并没有解决我的问题。
就我而言,问题的解释是,每次cron
执行sendmail
命令时,$HOME
都设置为/
,而不是/home/<user>
。因此,即使msmtp
通过符号链接替换sendmail
,也无法找到$HOME/.msmtprc
中的用户特定配置文件。
我的解决方案是使用/etc/msmtprc
代替$HOME/.msmtprc
。
这可能不是您系统的最佳解决方案,因为它可能会强制您/etc/msmtprc
的某些敏感数据被其他用户读取。
在这里阅读更多内容: http://comments.gmane.org/gmane.linux.debian.devel.bugs.general/671011