Я использую Ubuntu на AWS и использую их SES (Simple Email Service) и sSmtp для отправки журналов электронной почты, поскольку это единственная потребность в электронной почте на сервере.
У меня есть ssmtp, и все работает, за исключением писем, отправленных из заданий cron, которые отклоняются из-за адреса From :. SES требует, чтобы адреса электронной почты From: и To: были проверены, но электронное письмо, отправленное из cron, и просто root
не root@mydomain.com
.
Есть ли способ установить полный адрес электронной почты, который cron использует в качестве адреса От:, или есть способ заставить ssmtp перезаписать От: когда это просто имя без домена?
Мой 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
Поскольку в Ubuntu невозможно изменить адрес From :, который отправляет cron, я нашел хакерское решение. Возможно, это не лучший способ, но, похоже, он работает.
Когда ssmtp установлен, он создает ссылку из /usr/sbin/sendmail
к /usr/sbin/ssmtp
. Я удалил ссылку и создал файл sendmail, содержащий следующее:
sed "s/From: root /From: root@mydomain.com /" | /usr/sbin/ssmtp $*
Теперь любое письмо, отправленное из root
будет переписан на root@mydomain.com