Поиск по сайту:

Как настроить почтовый агент для работы с электронной почтой из командной строки


Когда ваш сервер отправляет вам электронные письма, это простой способ получать уведомления от скриптов bash, приложений и заданий cron. Электронная почта командной строки работает так же, как личная электронная почта, и ее легко настроить и использовать.

Как работает электронная почта из командной строки?

Когда электронная почта путешествует по трубам Интернета, она обычно отправляется по протоколу Simple Mail Transfer Protocol или SMTP. Сервер, который обрабатывает отправку почты, называется SMTP-сервером, и многие бесплатные почтовые провайдеры (Gmail, Yahoo и т. д.) предоставляют SMTP-серверы бесплатно. Это отлично подходит для этого варианта использования, так как вам нужно будет только настроить приложение командной строки, которое выполняет отправку.

Это приложение называется агентом пересылки почты (MTA) и управляет связью с SMTP-сервером. Вам нужно будет аутентифицировать MTA на SMTP-сервере, что обычно так же просто, как предоставление ему вашего пароля или ключа. После этого MTA сможет действовать от вашего имени и отправлять электронные письма из вашей учетной записи.

Если вы планируете отправлять электронные письма конечным пользователям, вам необходимо настроить дополнительную информацию у вашего SMTP-провайдера. Обычно это означает проверку вашего домена с помощью аутентификации DKIM и SPF, которая доказывает, что вы являетесь владельцем домена и не подделываете свой адрес. Вы можете сделать это с помощью Gmail, но если вы отправляете много писем, вам следует использовать бизнес-решение, такое как Amazon SES.

Как установить и настроить постфикс

Самое простое решение для электронной почты из командной строки — использовать Postfix в качестве MTA с использованием бесплатного SMTP-сервера, такого как Gmail. Скорость Gmail ограничена 100 электронными письмами в день, что, вероятно, достаточно для простых уведомлений по электронной почте. Если вам нужно больше, вы можете использовать Amazon SES или SendGrid, которые в этом примере должны быть заменой SMTP-сервера Gmail.

Postfix также может запускать собственный SMTP-сервер, но его сложнее настроить и он менее совместим с внешними получателями, если вы не настроите проверку домена.

Установите Postfix и libsasl2-modules, пакет для управления SMTP-аутентификацией, из диспетчера пакетов вашего дистрибутива. Для систем на основе Debian, таких как Ubuntu, это будет:

sudo apt-get install postfix libsasl2-modules

По мере установки Postfix вам будет предложено выполнить настройку. На первом экране выберите «Интернет-сайт», который настроит Postfix для использования SMTP.

Следующее приглашение запросит ваше доменное имя. Вам не нужно доменное имя для использования Postfix, но оно вам понадобится, чтобы ваши электронные письма отправлялись с этого доменного имени. В этом примере без указания доменного имени ваши электронные письма будут поступать из учетной записи Gmail, которую вы настроили для Postfix.

Затем вам нужно будет аутентифицировать Postfix. Вы можете использовать пароль своей учетной записи Gmail, что нормально, если вы создаете новую учетную запись только для Postfix, но если вы используете свою личную учетную запись, вам потребуется создать пароль приложения. Таким образом, пароль может быть отозван в любое время. Обратите внимание, что для использования паролей приложений вам потребуется включить двухфакторную аутентификацию.

Postfix хранит данные аутентификации в /etc/postfix/sasl/sasl_passwd. Этот файл может отсутствовать по умолчанию, поэтому вам, возможно, придется создать его с помощью touch. Откройте его и вставьте свою информацию в:

[smtp.gmail.com]:587 username@gmail.com:password

Это настраивает Postfix для использования SMTP-сервера Google и аутентификации с вашими данными.

Затем запустите postmap на sasl_passwd:

sudo postmap /etc/postfix/sasl_passwd

Это создаст файл sasl_passwd.db, используемый Postfix. Оба этих файла хранят пароль вашего приложения в виде открытого текста, поэтому вы можете ограничить их доступом к root, запустив chown и chmod:

sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Теперь Postfix должен быть готов к работе, но вам нужно настроить основной файл конфигурации Postfix для использования ретранслятора SMTP и ваших учетных данных SASL. Откройте /etc/postfix/main.cf в вашем любимом текстовом редакторе и найдите параметр «relayhost». Измените это, чтобы использовать SMTP-сервер Gmail:

relayhost = [smtp.gmail.com]:587

Затем в конце файла добавьте следующие строки, чтобы настроить SASL и использовать свой файл паролей.

# enable SASL authentication
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
smtp_use_tls = yes
# where to find CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Сохраните этот файл, затем перезапустите Postfix с помощью systemctl:

sudo systemctl restart postfix

Теперь Postfix должен быть полностью настроен и установлен в качестве обработчика почты по умолчанию в вашей системе. Вы можете проверить это с помощью собственной команды Postfix sendmail :

sendmail recipient@gmail.com
FROM: youremail@gmail.com
SUBJECT: Hello from your server!
This is a test email sent from your server by Postfix.
.

Проверьте свой почтовый ящик (или исходящий), и вы должны увидеть новое электронное письмо. Вы можете запустить  sudo tail -f /var/log/mail.log (или mail.err), чтобы проверить журналы почты.

Postfix настроит себя как почтовый обработчик вашего сервера по умолчанию. Любое приложение или программа, которым необходимо отправлять электронные письма, теперь должны использовать Postfix по умолчанию, например PHP (который использует sendmail Postfix). Некоторым может потребоваться дополнительная настройка, которая обычно просто говорит приложению использовать Postfix.

Если вы не хотите использовать sendmail (поскольку он немного громоздкий), вы можете установить другой почтовый клиент. Хорошим клиентом является mutt, который поддерживает отправку файлов в виде вложений и по умолчанию использует Postfix. Синтаксис простой отправки:

echo "email content" | mutt -s "email subject" recipient@gmail.com

А для прикрепления файлов вам нужно будет отделить значения флага -a от получателя двойным тире «--»:

echo "email content" | mutt -s "email subject" -a /path/to/file -- recipient@gmail.com

Который появится в вашем почтовом ящике с прикрепленным файлом, если он не превышает ограничений по размеру файла, наложенных SMTP-сервером:

Какой бы почтовый клиент вы ни выбрали, любой из них должен использоваться в сценариях оболочки, заданиях cron и в любом другом месте, которое вы можете настроить для запуска команд Unix.