Для тех, кто сам настраивает и обслуживает почтовые сервера, хочу предложить удобный инструмент для диагностики - Swaks (Swiss Army Knife for SMTP). В нём нет чего-то особенного, что вы не смогли бы выполнить с помощью прямых запросов через telnet. Но со swaks удобнее, быстрее и проще, и при этом вы видите полный лог общения с почтовым сервером, как если бы вы с ним общались по telnet. Утилита есть в стандартных репозиториях популярных систем, так что с установкой никаких проблем:# apt install swaksМожете сразу же проверить свой сервер на возможность отправки сообщений без аутентификации:# swaks --to user@example.com --server mail.example.netКорректно настроенный сервер должен вернуть ошибку, причём её код будет зависеть от конкретных настроек почтового сервера. А вот реальная отправка письма с аутентификацией. Пароль будет запрошен в консоли:# swaks --to zeroxzed@gmail.com --from vladimir@zeroxzed.ru --auth PLAIN --auth-user vladimir@zeroxzed.ru --server mail.zeroxzed.ruС помощью похожего запроса можно удобно проверить поддерживаемые методы аутентификации. Например, CRAM-MD5:# swaks --to zeroxzed@gmail.com --from vladimir@zeroxzed.ru --auth CRAM-MD5 --auth-user vladimir@zeroxzed.ru --server mail.zeroxzed.ru=== Trying mail.zeroxzed.ru:25...=== Connected to mail.zeroxzed.ru.<- 220 mail.zeroxzed.ru ESMTP -> EHLO debian11.homelab.local<- 250-mail.zeroxzed.ru<- 250-8BITMIME<- 250-SIZE 31457280<- 250-AUTH PLAIN LOGIN<- 250-STARTTLS<- 250 PIPELINING*** Auth not attempted, requested type not available -> QUIT<- 221 GoodbyeСервер ответил, что подобный механизм аутентификации не поддерживает.Если не хочется каждый раз указывать данные аутентификации, их можно добавить в файл .netrc. Это тот же файл, что поддерживает и curl. Формат его такой:machine mail.server.ru login root@server.ru password password123Чтобы программа приняла этот файл, у него должен быть доступ только для пользователя, от которого вы запускаете программу. В качестве тела письма можно использовать текстовый файл. Это удобно, если нужно проверить работу антивируса или антиспама. К примеру, берём файл EICAR-Test-File, на который все антивирусы дают реакцию, как на вирус, и отправляем его содержимое письмом:# wget http://eicar.eu/eicar.com.txt# swaks --to zeroxzed@gmail.com --from vladimir@zeroxzed.ru --auth PLAIN --auth-user vladimir@zeroxzed.ru --server mail.zeroxzed.ru --attach - --suppress-data <eicar.com.txtGmail не принял письмо: "552 5.7.0 This message was blocked because its content presents a potential security issue."Тело письма можно и сразу в консоли передать через ключ --body 'foo', тему через --header 'Subject: foo'. Можно и случайные заголовки добавлять примерно так: --header-X-Test "test email". В общем, инструмент простой, универсальный, интуитивно понятный. Автор поддерживает и регулярно обновляет. Можно использовать и в каких-то велосипедах на bash. Swaks умеет работать через различные прокси, использовать tls сертификаты с выбором шифров и некоторых настроек.⇨ Исходники#mailserver