|
|||||||
|
Postfix - настройка отправки email от пользователей сервераЗадача: настроить отправку электронной почты (e-mail) от пользователей сервера в интернет. Необходимо для мониторинга оборудования, извещения о событиях и т.п. Пример: получать оповещения от smartd в случае обнаружения проблем со SMART диска. Чем меньше посредников на пути письма, тем меньше точек возможных отказов и тем больше шансов, что email будет доставлен получателю. Исходя из этих соображений, самый надежный вариант - это настроить собственный сервер отправки почты (почтовый агент; Mail Transfer Agent - MTA), а не использовать, например, SMTP своего почтового ящика в Gmail.com. Но для того, чтобы отправленные из своего MTA письма были доставлены до адресата, а не удалены спам-фильтром получателя, необходимо располагать:
Почтовый сервер - программа, которая отправляет e-mail получателю напрямую (на его почтовый сервер) или через посредника (relay). Здесь будет рассматриваться установка и настройка Postfix для CentOS 7. Эта информация будет полезна и для выбора и установки MTA на другие системы. Выбор почтового сервераИз огромного множества рассмотрим 3 самых массовых почтовых сервера: Sendmail, Exim и Postfix. Согласно Еще в 2007 году Sendmail был установлен на большинстве серверов, но утрата позиций связана, в первую очередь, с часто возникающими проблемами с безопасностью. Exim - мощный почтовый агент, большинство функционала которого не будет использоваться для поставленной задачи. Postfix - самый безопасный и простой в настройке полноценный MTA, он и был выбран для отправки писем с сервера.
Установка и настройка Postfix в CentOS 7Установка и сохранения настроек по умолчанию в файле main.cf.origin: # yum install postfix # cp /etc/postfix/main.cf /etc/postfix/main.cf.origin Для настройки конфигурации Postfix необходимо отредактировать или добавить следующие параметры в главном конфигурационном файле Postfix /etc/postfix/main.cf: myhostname = server.example.com mydomain = example.com myorigin = $myhostname mynetworks = 127.0.0.0/8 inet_protocols = ipv4
После первичной настройки запускаем Postfix и прописываем его в автозагрузку: # systemctl start postfix # systemctl enable postfix # systemctl status postfix Чтобы перечитать конфиг Postfix после его редактирования, пригодятся такие команды: # systemctl reload postfix или # systemctl restart postfix После этого Postfix готов к тестированию. Отправим почтовое сообщение самому себе на e-mail myemail@example.com и посмотрим логи Postfix: # echo "Email body: test MTA Postfix" | mail -s "Test postfix" myemail@example.com # tail -30 /var/log/maillog Если в журнале присутствует такая строчка со статусом "status=bounced", значит e-mail отклонен сервером получателя. Причину ищите в этой же строке журнала чуть дальше: postfix/smtp[10121]: 2884210020C3: to=<myemail@example.com>, relay=smtp-in.l.example.com:25, delay=0.36, delays=0.02/0.01/0.13/0.21, dsn=5.7.1, status=bounced ... Если же в журнале "status=sent", значит e-mail принят сервером получателя и будет скорее всего доставлен по назначению: postfix/smtp[11111]: 9A4D230021A1: to=<myemail@example.com>, relay=smtp-in.l.example.com:25, delay=0.32, delays=0.01/0.01/0.09/0.2, dsn=2.0.0, status=sent ... Но даже если письмо принято получателем, оно может быть (точнее скорее всего) будет автоматически перемещено в папку "Спам". Как с этим бороться - читайте ниже. Дополнительные настройки для работы почтового сервераНастройка Hostname сервераПосмотреть, как называется сервер можно такой командой: # hostname Если название отличается от необходимого или не установлено, тогда записать hostname для сервера: # echo "server" > /etc/hostname # hostname -F /etc/hostname Обратите внимание, что hostname сервера не равно домену сервера! Если полный домен сервера: "server.example.com", то hostname сервера - это "server". Настройка PTR (Reverse DNS)В настройках домена прописываются A-записи, которые связывают домен с IP-адресом(ами) сервера. Reverse DNS - это обратное действие, которое связывает IP-адрес с доменом. Сервер-отправитель письма указывает в параметре HELO (EHLO) свой домен, например server.example.com, а сервер получателя делает специальный whois-запрос, чтобы проверить, какой домен записан для IP сервера отправителя. Если домен, указанный для IP и в заголовке HELO (EHLO) не совпадают, то с большой долей вероятности письмо будет или отклонено, или перемещено в папку Спам. Прописать Reverse DNS может только владелец IP-адреса, который назначен серверу - это скорее всего хостинг, где размещен сервер или VPS. Если сервис расположен в квартире/офисе, то по вопросу указания PTR стоит обратиться к интернет-провайдеру. Не нужно путать владельца IP-адреса и регистратора для доменов - это, обычно, разные компании. Но если вы разместили свой сервер и зарегистрировали домен у одного и того же провайдера, то тогда по вопросу изменения Reverse DNS следует обращаться к одной и той же компании. Проверить домен, присвоенный PTR, можно утилитой командной строки dig: $ dig -x 5.6.7.8 или используя различные онлайн-сервисы. Настройка DNS доменного имени почтового сервераВ панели управления регистратора домена example.com поддомен для сервера (server) конфигирируется, обычно, в разделе "Настройка DNS": server.example.com A 5.6.7.8 server.example.com MX 10 server.example.com server.example.com TXT v=spf1 +a +mx -all В третьей строке указывается SPF-запись для поддомена. SPF используется почтовым сервером-получателем для проверки: разрешено ли владельцем домена отправка писем с IP, с которого пришло в действительности письмо? Параметры SPF "+a +mx -all" указывают, что письма могут отправлять только те IP, которые прописаны в A и MX записях домена, а со всех остальных IP принимать почту запрещено. Проверка влияния настроек PTR и DNS на отправляемые e-mailПосле изменения настроек DNS необходимо подождать какое-то время, для того, чтобы они обновились на всех DNS серверах. Иногда это может затянуться до одних суток. Отправляем тестовое письмо на свой e-mail и смотрим журнал: # echo "Email body: test MTA Postfix" | mail -s "Test postfix" myemail@example.com # tail -30 /var/log/maillog Если "status" отправки e-mail Postfix равен "sent", значит письмо было получено сервером принимающей стороны. Следует проверить, не попало ли оно в спам, и если нет - значит большая часть работы по настройке Postfix выполнена успешно. Но остается еще один важный момент, требующий настройки: шифрование письма. По умолчанию, Postfix, да и, наверное, все другие MTA, отправляет письма в открытом не зашифрованном виде. Это сравнимо с просмотром web-страниц по небезопасному протоколу HTTP, вместо HTTPS. В этом случае, например, в интерфейсе Gmail, напротив получателя будет отображаться красный перечеркнутый замок, означающий, что сообщение не зашифровано. Но самое печальное, что если в письме будут какие-либо конфиденциальные данные, их смогут без проблем прочитать все, через кого проходит трафик, что очень и очень не безопасно. Добавить шифрование в Postfix для отправляемых писем - весьма просто, инструкция расположена ниже. TLS-шифрование отправляемых писем в PostfixПервым делом необходимо получить сертификат, при помощи которого будут шифроваться все отправляемые из Postfix e-mail. Самый простой и быстрый способ - создать сертификат самостоятельно. openssl req -new -nodes -x509 -out /etc/postfix/smtpd.pem -keyout /etc/postfix/smtpd.pem -days 18400 На все вопросы, кроме указания Common Name, можно отвечать на свое усмотрение, Common Name сертификата должно совпадать с именем сервера (в этой конфигурации - server.example.com). Этой командой будет создан сертификат со сроком действия 50 лет. Далее нужно внести изменения в главный файл конфигурации Postfix (/etc/postfix/main.cf), а точнее, просто добавить строки, опубликованные ниже в конец файла: tls_random_source = dev:/dev/urandom smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/smtpd.pem smtpd_tls_cafile = /etc/postfix/smtpd.pem smtpd_tls_cert_file = /etc/postfix/smtpd.pem smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtpd_tls_loglevel = 1 smtpd_use_tls = yes Краткое описание настроек для шифрования исходящих писем:
Опубликовано: 2020/07/28
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/linux.php?txt=728" target="_blank">Postfix - настройка отправки email от пользователей сервера</a> 7279
Добавить комментарий
|