Arch Linux: ssmtp – отправка локальной почты

By | 10/07/2018
 

Хочется иметь уведомления от системы на почту, например статусы cron-задач и тому подобное.

Как вариант – использовать ssmtp, и отправлять письма через внешний SMTP.

Устанавливаем:

sudo pacman -S ssmtp

Редактируем /etc/ssmtp/ssmtp.conf:

mailhub=mail.example.kiev.ua:587

# The full hostname
hostname=setevoy-arch-home

UseTLS=Yes
UseSTARTTLS=Yes

AuthUser=user@example.kiev.ua
AuthPass=password
AuthMethod=LOGIN

У ssmtp есть баг со специальными символами – =, ; и # он не воспринимает. Благо, когда есть свой сервер – то всегда можно добавить ещё один ящик.

Что бы настроить поле For aka RCPT TO для ssmtp – в конце файла /etc/mail.rc добавляем алиасы:

...
alias setevoy 1th@example.kiev.ua
alias root 1th@example.kiev.ua

Проверяем отправку юзеру setevoy:

sudo vim /etc/echo "Test" | mail -v -s "Test" setevoy
mail: Loading /etc/mail.rc
mail: No such file to load: /home/setevoy/.mailrc
mail: P(seudo)R(andomNumber)G(enerator): *TLS RAND_*
[<-] 220 mail.example.org.ua, ESMTP EXIM 4.90_1
[->] EHLO setevoy-arch-home
[<-] 250 HELP
[->] STARTTLS
[<-] 220 TLS go ahead
[->] EHLO setevoy-arch-home
[<-] 250 HELP
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] c2V0ZXZveS1hcmNoLWhvbWVAc2V0ZXZveS5vcmcudWE=
[<-] 334 UGFzc3dvcmQ6
[<-] 235 Authentication succeeded
[->] MAIL FROM:<setevoy-arch-home@example.org.ua>
[<-] 250 OK
[->] RCPT TO:<1th@example.kiev.ua>
[<-] 250 Accepted
[->] DATA
[<-] 354 Enter message, ending with "." on a line by itself
[->] Received: by setevoy-arch-home (sSMTP sendmail emulation); Sun, 07 Oct 2018 11:06:15 +0300
[->] From: setevoy-arch-home@example.org.ua
[->] Date: Sun, 07 Oct 2018 11:06:15 +0300
[->] To: 1th@example.kiev.ua
[->] Subject: Test
[->] User-Agent: mail v14.9.11
[->]
[->] Test
[->] .
[<-] 250 OK id=1g944t-00060X-At
[->] QUIT
[<-] 221 mail.example.org.ua closing connection

Лог на отправителе:

...
Oct 07 11:06:15 setevoy-arch-home sSMTP[27962]: Creating SSL connection to host
Oct 07 11:06:15 setevoy-arch-home sSMTP[27962]: SSL connection using ECDHE-RSA-AES256-GCM-SHA384
Oct 07 11:06:16 setevoy-arch-home sSMTP[27962]: Sent mail for setevoy-arch-home@example.org.ua (221 mail.example.org.ua closing connection) uid=1000 username=setevoy outbytes=438
...

И лог exim-а на принимающем сервере:

...
2018-10-07 11:07:27 1g9462-00062x-LO <= setevoy-arch-home@example.org.ua H=(setevoy-arch-home) [188.190.246.48] I=[77.120.103.20]:587 P=esmtpsa X=TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256 CV=no A=auth_plain:setevoy-arch-home@example.org.ua S=536 from <setevoy-arch-home@example.org.ua> for 1th@example.kiev.ua
2018-10-07 11:07:27 1g9462-00062x-LO => 1th <1th@example.kiev.ua> R=dovecot_user T=dovecot_delivery
2018-10-07 11:07:27 1g9462-00062x-LO Completed

Письмо получено.

Проверим отправку системных уведомлений, например о неудачах cron.

Добавляем задачу с вызовом несуществующего скрипта, в MAILTO указываем ящик, на который шлём уведомления:

MAILTO=1th@example.kiev.ua
* * * * * /bla/bla.sh

Ждём выполнения:

...
Oct 07 11:16:01 setevoy-arch-home CROND[28321]: (setevoy) CMD (/bla/bla.sh)
Oct 07 11:16:01 setevoy-arch-home sSMTP[28322]: Creating SSL connection to host
Oct 07 11:16:01 setevoy-arch-home sSMTP[28322]: SSL connection using ECDHE-RSA-AES256-GCM-SHA384
Oct 07 11:16:03 setevoy-arch-home sSMTP[28322]: Sent mail for setevoy-arch-home@example.org.ua (221 mail.example.org.ua closing connection) uid=1000 username=setevoy outbytes=834

И получаем письмо:

Готово.