Сегодня будет практическая часть, о том как для моего тестового полигона базирующегося на связки Debian 10 + Proxmox 6 установить MTA-агент. Как с его помощью настроить отправку почтовых сообщений с учетом всех нюансов которые мне подготовила операционная система Debian 10 Server.

Важные моменты на которые стоит обратить свое внимание:

На заметку: Отправка писем с ящика на Yandex будет возможна только после первой авторизации в нем через Web-браузер при создании

На заметку: Для нормальной доставки писем получателям ящик должен реально существовать!

Шаг №1: Отключаю Apparmor в системе Debian 10 Server:

ekzorchik@srv-debian:~$ sudo systemctl stop apparmor

ekzorchik@srv-debian:~$ sudo update-rc.d -f apparmor remove

ekzorchik@srv-debian:~$ sudo apt-get remove -y apparmor

ekzorchik@srv-debian:~$ sudo rm -Rf /etc/apparmor /etc/apparmor.d/

Шаг №2: К сожалению свой любимый MTA агент ssmtp не могу поставить, его нет в стандартных репозитариях Debian, да и кто му же этот пакет не обновлялся с 2019-03-19, поэтому буду использовать msmtp:

ekzorchik@srv-debian:~$ sudo apt-get install -y msmtp-mta msmtp

ekzorchik@srv-debian:~$ msmtp --version

msmtp version 1.8.3

Platform: x86_64-pc-linux-gnu

TLS/SSL library: GnuTLS

Authentication library: GNU SASL

Supported authentication methods:

plain scram-sha-1 external gssapi cram-md5 digest-md5 login ntlm

IDN support: enabled

NLS: enabled, LOCALEDIR is /usr/share/locale

Keyring support: none

System configuration file name: /etc/msmtprc

User configuration file name: /home/ekzorchik/.msmtprc

Copyright (C) 2019 Martin Lambers and others.

This is free software. You may redistribute copies of it under the terms of

the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.

There is NO WARRANTY, to the extent permitted by law.

Шаг №3: Создаю почтовый ящик в собственном домене @ekzorchik:

Запускаю браузер, авторизуюсь под управляющим ящиком на сайте https://pdd.yandex.ru, ссылка изменяется на https://admin.yandex.ru/mail/users?uid=ID - Пользователи - Добавить пользователей - Создать аккаунт

  • Имя: proxmox
  • Фамилия: proxmox
  • Логин: proxmox
  • Пароль: <PASSWORD>
  • Пароль еще раз: <PASSWORD>
  • Пол: Мужской
  • Язык: Русский

и нажимаю «Сохранить»

Далее нужно авторизоваться в почтовом ящике через браузер. Открываю URL ссылку: https://passport.yandex.ru/auth?mode=add-user&retpath=https%3A%2F%2Fpassport.yandex.ru%2Fprofile

Авторизовываюсь в почтовом ящике proxmox@ekzorchik.ru

и нажимаю "Войти". Подтверждаю регистрацию: «Завершить регистрацию»

Подтверждаю регистрацию

После меняю URL на mail.yandex.ru и я в своем почтовом ящике. Здесь в правом верхнем углу текущей вкладки нажимаю на значок шестеренки ("Все настройки") — Почтовые программы — и проверяю что отмечен доступ:

  • С сервера imap.yandex.ru по протоколу IMAP: отмечено галочкой
  • С сервера pop.yandex.ru по протоколу POP3: галочку снимаю

и нажимаю "Сохранить изменения"

Шаг №4: Создаю конфигурацию работы MTAагента msmtp на работу с почтовым ящиком proxmox@ekzorchik.ru

ekzorchik@srv-debian:~$ sudo touch /var/log/msmtp.log

ekzorchik@srv-debian:~$ sudo chown root:msmtp /var/log/msmtp.log

ekzorchik@srv-debian:~$ sudo usermod -aG msmtp ekzorchik

ekzorchik@srv-debian:~$ sudo nano /etc/msmtprc

#pdd.yandex.ru

account yandex

tls on

tls_starttls on

tls_certcheck off

logfile /var/log/msmtp.log

host smtp.yandex.ru

port 587

from proxmox@ekzorchik.ru

keepbcc on

auth on

user proxmox@ekzorchik.ru

password <PASSWORD>

Шаг №5: Произвожу тестовую отправку сообщения от имени почтового ящика proxmox@ekzorchik.ru на support@ekzorchik.ru через настроенный конфигурационный файл MTAагента msmtp:

ekzorchik@srv-debian:~$ echo -e "test" | sudo msmtp -d -a yandex support@ekzorchik.ru

loaded system configuration file /etc/msmtprc

ignoring user configuration file /root/.msmtprc: No such file or directory

using account yandex from /etc/msmtprc

host = smtp.yandex.ru

port = 587

source ip = (not set)

proxy host = (not set)

proxy port = 0

timeout = off

protocol = smtp

domain = localhost

auth = choose

user = proxmox@ekzorchik.ru

password = *

passwordeval = (not set)

ntlmdomain = (not set)

tls = on

tls_starttls = on

tls_trust_file = system

tls_crl_file = (not set)

tls_fingerprint = (not set)

tls_key_file = (not set)

tls_cert_file = (not set)

tls_certcheck = off

tls_min_dh_prime_bits = (not set)

tls_priorities = (not set)

auto_from = off

maildomain = (not set)

from = proxmox@ekzorchik.ru

add_missing_from_header = on

add_missing_date_header = on

remove_bcc_headers = off

dsn_notify = (not set)

dsn_return = (not set)

logfile = /var/log/msmtp.log

logfile_time_format = (not set)

syslog = (not set)

aliases = (not set)

reading recipients from the command line

<-- 220 vla4-a16f3368381d.qloud-c.yandex.net ESMTP (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)

--> EHLO localhost

<-- 250-vla4-a16f3368381d.qloud-c.yandex.net

<-- 250-8BITMIME

<-- 250-PIPELINING

<-- 250-SIZE 42991616

<-- 250-STARTTLS

<-- 250-AUTH LOGIN PLAIN XOAUTH2

<-- 250-DSN

<-- 250 ENHANCEDSTATUSCODES

--> STARTTLS

<-- 220 Go ahead

TLS session parameters:

(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(AES-256-GCM)

TLS certificate information:

Owner:

Common Name: smtp.yandex.ru

Organization: Yandex LLC

Organizational unit: ITO

Locality: Moscow

State or Province: Russian Federation

Country: RU

Issuer:

Common Name: Yandex CA

Organization: Yandex LLC

Organizational unit: Yandex Certification Authority

Country: RU

Validity:

Activation time: Tue 24 Sep 2019 01:01:12 PM MSK

Expiration time: Wed 23 Sep 2020 01:01:12 PM MSK

Fingerprints:

SHA256: F3:E0:01:21:71:EC:E4:15:B9:44:CD:C4:77:97:2D:31:A1:E4:80:33:0A:46:9E:71:EA:20:29:01:3F:28:3D:61

SHA1 (deprecated): AE:79:72:61:B8:39:83:BC:63:8E:86:37:0B:96:1F:11:69:7E:E2:6F

--> EHLO localhost

<-- 250-vla4-a16f3368381d.qloud-c.yandex.net

<-- 250-8BITMIME

<-- 250-PIPELINING

<-- 250-SIZE 42991616

<-- 250-AUTH LOGIN PLAIN XOAUTH2

<-- 250-DSN

<-- 250 ENHANCEDSTATUSCODES

--> AUTH PLAIN AHByb3htb3hAZWt6b3JjaGlrLnJ1AEFhMTIzNDU2N0AhIw==

<-- 235 2.7.0 Authentication successful.

--> MAIL FROM:<proxmox@ekzorchik.ru>

--> RCPT TO:<support@ekzorchik.ru>

--> DATA

<-- 250 2.1.0 <proxmox@ekzorchik.ru> ok

<-- 250 2.1.5 <support@ekzorchik.ru> recipient ok

<-- 354 Enter mail, end with "." on a line by itself

--> From: proxmox@ekzorchik.ru

--> Date: Sat, 02 May 2020 23:57:30 +0300

--> test

--> .

<-- 554 5.7.1 [2] Message rejected under suspicion of SPAM; https://ya.cc/1IrBc 1588453051-YUgiPU42Ee-vUeewtIJ

msmtp: the server did not accept the mail

msmtp: server message: 554 5.7.1 [2] Message rejected under suspicion of SPAM; https://ya.cc/1IrBc 1588453051-YUgiPU42Ee-vUeewtIJ

msmtp: could not send mail (account yandex from /etc/msmtprc)

Ключ "-d" — это режим отладки с выводом всех сообщений.

Ключ "-a" — это указание какую конфигурацию в /etc/msmtprc задействовать. Да их может быть несколько: для Exchange, Yandex-почта для домена, Yandex, Mail и т.д.

Решение этой ошибки:

<-- 554 5.7.1 [2] Message rejected under suspicion of SPAM; https://ya.cc/1IrBc 1588453051-YUgiPU42Ee-vUeewtIJ

msmtp: the server did not accept the mail

msmtp: server message: 554 5.7.1 [2] Message rejected under suspicion of SPAM; https://ya.cc/1IrBc 1588453051-YUgiPU42Ee-vUeewtIJ

msmtp: could not send mail (account yandex from /etc/msmtprc)

Нужно с почтового адреса proxmox@ekzorchik.ru через Web-интерфейс отправить в ручную любое письмо с любым содержанием на почтовый адрес support@ekzorchik.ru

и только после отправка через консоль отработает:

ekzorchik@srv-debian:~$ echo -e "PDD EKZORCHIk.RU" | sudo msmtp -d -a yandex support@ekzorchik.ru

loaded system configuration file /etc/msmtprc

ignoring user configuration file /root/.msmtprc: No such file or directory

using account yandex from /etc/msmtprc

host = smtp.yandex.ru

port = 587

source ip = (not set)

proxy host = (not set)

proxy port = 0

timeout = off

protocol = smtp

domain = localhost

auth = choose

user = proxmox@ekzorchik.ru

password = *

passwordeval = (not set)

ntlmdomain = (not set)

tls = on

tls_starttls = on

tls_trust_file = system

tls_crl_file = (not set)

tls_fingerprint = (not set)

tls_key_file = (not set)

tls_cert_file = (not set)

tls_certcheck = off

tls_min_dh_prime_bits = (not set)

tls_priorities = (not set)

auto_from = off

maildomain = (not set)

from = proxmox@ekzorchik.ru

add_missing_from_header = on

add_missing_date_header = on

remove_bcc_headers = off

dsn_notify = (not set)

dsn_return = (not set)

logfile = /var/log/msmtp.log

logfile_time_format = (not set)

syslog = (not set)

aliases = (not set)

reading recipients from the command line

<-- 220 vla3-5ed9a7202853.qloud-c.yandex.net ESMTP (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)

--> EHLO localhost

<-- 250-vla3-5ed9a7202853.qloud-c.yandex.net

<-- 250-8BITMIME

<-- 250-PIPELINING

<-- 250-SIZE 42991616

<-- 250-STARTTLS

<-- 250-AUTH LOGIN PLAIN XOAUTH2

<-- 250-DSN

<-- 250 ENHANCEDSTATUSCODES

--> STARTTLS

<-- 220 Go ahead

TLS session parameters:

(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(AES-256-GCM)

TLS certificate information:

Owner:

Common Name: smtp.yandex.ru

Organization: Yandex LLC

Organizational unit: ITO

Locality: Moscow

State or Province: Russian Federation

Country: RU

Issuer:

Common Name: Yandex CA

Organization: Yandex LLC

Organizational unit: Yandex Certification Authority

Country: RU

Validity:

Activation time: Tue 24 Sep 2019 06:01:12 AM EDT

Expiration time: Wed 23 Sep 2020 06:01:12 AM EDT

Fingerprints:

SHA256: F3:E0:01:21:71:EC:E4:15:B9:44:CD:C4:77:97:2D:31:A1:E4:80:33:0A:46:9E:71:EA:20:29:01:3F:28:3D:61

SHA1 (deprecated): AE:79:72:61:B8:39:83:BC:63:8E:86:37:0B:96:1F:11:69:7E:E2:6F

--> EHLO localhost

<-- 250-vla3-5ed9a7202853.qloud-c.yandex.net

<-- 250-8BITMIME

<-- 250-PIPELINING

<-- 250-SIZE 42991616

<-- 250-AUTH LOGIN PLAIN XOAUTH2

<-- 250-DSN

<-- 250 ENHANCEDSTATUSCODES

--> AUTH PLAIN AHByb3htb3hAZWt6b3JjaGlrLnJ1AEFhMTIzNDU2N0AhIw==

<-- 235 2.7.0 Authentication successful.

--> MAIL FROM:<proxmox@ekzorchik.ru>

--> RCPT TO:<support@ekzorchik.ru>

--> DATA

<-- 250 2.1.0 <proxmox@ekzorchik.ru> ok

<-- 250 2.1.5 <support@ekzorchik.ru> recipient ok

<-- 354 Enter mail, end with "." on a line by itself

--> From: proxmox@ekzorchik.ru

--> Date: Mon, 04 May 2020 15:00:36 -0400

--> PDD EKZORCHIk.RU

--> .

<-- 250 2.0.0 Ok: queued on vla3-5ed9a7202853.qloud-c.yandex.net as 1588618837-Jd5klGeVCU-0aJCqiUj

--> QUIT

<-- 221 2.0.0 Closing connection.

ekzorchik@srv-debian:~$

и если посмотреть через браузер, то во Входящих почтового ящика support@ekzorchik.ru вижу тестовое письмо от ящика proxmox@ekzorchik.ru

Тестовое письмо через MTA-агент msmtp

Шаг №6: А кстати, что говорил лог файл работы MTAагента msmtp:

ekzorchik@srv-debian:~$ sudo tail -f /var/log/msmtp/msmtp.log

May 04 15:07:32 host=smtp.yandex.ru tls=on auth=on user=proxmox@ekzorchik.ru from=proxmox@ekzorchik.ru recipients=support@ekzorchik.ru mailsize=82 smtpstatus=250 smtpmsg='250 2.0.0 Ok: queued on vla1-ee05250d997a.qloud-c.yandex.net as 1588619252-qcigM96E2p-7WWqObvl' exitcode=EX_OK

^C

ekzorchik@srv-debian:~$

Шаг №7: Чтобы я от учетной записи ekzorchik мог беспрепятственно вызывать утилиту msmtp сделаю ка я себе разрешения:

ekzorchik@srv-debian:~$ whereis msmtp

msmtp: /usr/bin/msmtp /usr/share/man/man1/msmtp.1.gz /usr/share/info/msmtp.info.gz

ekzorchik@srv-debian:~$

ekzorchik@srv-debian:~$ sudo visudo /etc/sudoers

ekzorchik ALL=(ALL) NOPASSWD:/usr/bin/msmtp,/usr/bin/mutt

Шаг №8: Чтобы любые сервисы системы задействовали msmtp делаю символическую ссылка на sendmail:

ekzorchik@srv-debian:~$ sudo mv /usr/sbin/sendmail /usr/sbin/sendmail.old

ekzorchik@srv-debian:~$ sudo ln -s /usr/bin/msmtp /usr/sbin/sendmail

Шаг №9: Уведомление на почту о фактах удаленного подключения через SSH к серверу:

ekzorchik@srv-debian:~$ sudo apt-get install -y mutt

ekzorchik@srv-debian:~$ sudo mv /etc/Muttrc /etc/Muttrc.backup

ekzorchik@srv-debian:~$ sudo nano /etc/Muttrc

set realname='proxmox'

set from=proxmox@ekzorchik.ru

set sendmail="/usr/bin/msmtp"

set envelope_from=yes

ekzorchik@srv-debian:~$ sudo nano /etc/bash.bashrc

echo "'ALERT - SSH Shell Access' $HOSTNAME $(date +%d_%m_%y_%H:%M:%S) $USER" | mutt -s "ALERT — SSH Shell Access" support@ekzorchik.ru > /dev/null 2>&1

Итого письмо приходящее на почтовый ящик support@ekzorchik.ru: когда кто-либо авторизуется на системе по SSH:

Уведомление на почту об авторизации по SSH

Работает. Итого я практически разобрал применение еще одного MTA-агента msmtp + клиента на отправку mutt, что в итоге позволило также как и при использовании ssmtp организовать отправку различных почтовых сообщений с минимумом действий и такой же переносимостью конфигурационного файла с одного сервера на другой. Заметка работоспособна. На этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.