На этот вопрос уже есть ответ здесь:
Я запускаю Ubuntu на AWS и использую их SES (Simple Email Service) и sSmtp для журналов электронной почты, поскольку это единственная необходимость для электронной почты на сервере.
Я настроил ssmtp, и все работает, но письма, отправленные с заданий cron, отклоняются из-за адреса From:. SES требует, чтобы адреса электронной почты From: и To: были проверены, но электронная почта, отправленная из cron и просто root
, а не root@mydomain.com
.
Есть ли способ установить полный адрес электронной почты, который cron использует в качестве адреса From:, или есть способ заставить ssmtp переписать From:, когда это просто имя без домена?
Мой ssmtp.conf выглядит так:
root=logs@mydomain.com
mailhub=email-smtp.us-east-1.amazonaws.com:465
rewriteDomain=mydomain.com
hostname=mydomain.com
#UseSTARTTLS=YES
UseTLS=YES
AuthUser=XXXX
AuthPass=XXXX
AuthMethod=LOGIN
FromLineOverride=YES
Спасибо.
cron использует команду sendmail
для отправки писем. Обычно почтовый сервер добавляет домен, поэтому в вашем случае это понадобится ssmtp.
Я никогда раньше не использовал sSMTP, но перезапись отправителя кажется довольно странной. Я посмотрел исходный код, и там есть файл / etc / ssmtp / revaliases
.
В примере указано следующее:
# sSMTP aliases
#
# Format: local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
В вашем случае, вероятно:
root:logs@mydomain.com:email-smtp.us-east-1.amazonaws.com:465
Поскольку не представляется возможным изменить адрес From:, отправляемый cron в Ubuntu, я нашел хакерское решение. Вероятно, это не лучший способ, но, похоже, он работает.
Когда ssmtp установлен, он создает ссылку из / usr / sbin / sendmail
на / usr / sbin / ssmtp
. Я удалил ссылку и создал файл sendmail, содержащий следующее:
sed "s/From: root /From: root@mydomain.com /" | /usr/sbin/ssmtp $*
Теперь любое письмо, отправленное из root
, будет перезаписано на root@mydomain.com