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

Автор: | 07/10/2018

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

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

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

[simterm]

$ sudo pacman -S ssmtp

[/simterm]

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

mailhub=mail.example.kiev.ua:587

# The full hostname
hostname=setevoy-arch-home

UseTLS=Yes
UseSTARTTLS=Yes

[email protected]
AuthPass=password
AuthMethod=LOGIN

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

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

...
alias setevoy [email protected]
alias root [email protected]

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

[simterm]

$ 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:<[email protected]>
[<-] 250 OK
[->] RCPT TO:<[email protected]>
[<-] 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: [email protected]
[->] Date: Sun, 07 Oct 2018 11:06:15 +0300
[->] To: [email protected]
[->] Subject: Test
[->] User-Agent: mail v14.9.11
[->] 
[->] Test
[->] .
[<-] 250 OK id=1g944t-00060X-At
[->] QUIT
[<-] 221 mail.example.org.ua closing connection

[/simterm]

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

[simterm]

...
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 [email protected] (221 mail.example.org.ua closing connection) uid=1000 username=setevoy outbytes=438
...

[/simterm]

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

[simterm]

...
2018-10-07 11:07:27 1g9462-00062x-LO <= [email protected] 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:[email protected] S=536 from <[email protected]> for [email protected]
2018-10-07 11:07:27 1g9462-00062x-LO => 1th <[email protected]> R=dovecot_user T=dovecot_delivery
2018-10-07 11:07:27 1g9462-00062x-LO Completed

[/simterm]

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

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

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

[email protected]
* * * * * /bla/bla.sh

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

[simterm]

...
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 [email protected] (221 mail.example.org.ua closing connection) uid=1000 username=setevoy outbytes=834

[/simterm]

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

Готово.