crontab использует msmtp для отправки почты не удалось
Я хочу использовать msmtp вместо postfix для отправки почты, когда crontab получает некоторые ошибки, но мне не удалось.
Моя операционная система 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)
В чем дело? Как решить проблему? Кто-нибудь может мне помочь?
2 ответа
Наконец я решил проблему сам...
Потому что я пишу MAILTO=myemail
в файле /etc/crontab
, но я добавляю использование крон crontab -e
, Так что вар MAILTO
не работает Он также отправляет почту root
не myemail
, он не может достичь адреса, поэтому msmtp получает ошибку.
Затем я изменил /etc/aliases
с default: myemail
разрешить отправлять всю почту на myemail, и все работает.
Тогда я получаю еще одну проблему, я считаю, что содержимое почты не будет отображать какие-либо символы utf-8, но заголовок может. В чем дело? Как решить эту проблему?
У меня был очень похожий сценарий, как описано в вопросе, однако текущий ответ не решил проблему для меня. В моем случае объяснение проблемы заключалось в том, что каждый раз, когда 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