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