Краткое руководство, объясняющее, как установить и настроить Postfix 3 на машине Linux CentOS 7.x для отправки электронной почты с использованием SMTP (TCP 25), SMTPS (TCP 465) и / или STARTTLS (TCP 587).
Статьи Время чтения: 7 минуты Просмотров: 1080
Несколько дней назад я написал сообщение о том, как установить и настроить sSMTP , простую и бесплатную альтернативу Postfix и Sendmail, которую можно использовать для отправки электронной почты через внешние SMTP-службы, предоставляемые такими поставщиками, как GMail , Aruba , Yahoo и т. Д. .
Хотя sSMTP - отличное программное обеспечение, тем, кто предпочитает настраивать реальную сделку, определенно понравится эта статья, в которой я объясню, как установить и настроить Postfix 3 - последнюю версию наиболее эффективного, безопасного и широко используемого почтовый сервер родился как (лучшая) альтернатива Sendmail .
Прежде чем продолжить, важно подчеркнуть тот факт, что в этой статье будет объяснено только, как отправлять электронную почту с помощью внешнего SMTP-сервиса с помощью Postfix , поскольку это не более 10% от того, что на самом деле может сделать эта замечательная программа. Если вам нужна дополнительная информация о Postfix и его возможностях, я настоятельно рекомендую взглянуть на официальную документацию Postfix на postfix.org . Кроме того, приведенные ниже инструкции подходят для машины CentOS / Fedora / RHEL Linux: хотя руководство также будет работать для любого другого дистрибутива, пользователям Ubuntu и Debian, возможно, придется немного адаптировать некоторые команды для своих менеджеров пакетов.
Первое, что мы должны сделать, это проверить, установлен ли Postfix в нашей системе, и, если это так, установленная версия. Это легко сделать, выполнив следующую команду терминала:
postconf -d | grep mail_version
Независимо от того, насколько свежа наша версия CentOS, высока вероятность, что у нас все еще будет Postfix 2. Если вас устраивает postfix2, то переходите сразу к настройке, для вас здесь ничего интересного не будет. Хотя такая версия может быть достаточно хорошей для большинства пользователей, она имеет очень ограниченные возможности при работе с устаревшей службой SMTPS , также известной как SMTP через SSL (на TCP-порту 465). Короче говоря, это в основном означает, что всякий раз, когда мы пытаемся подключиться к SMTP-серверу с использованием такого протокола, он, скорее всего, завершится ошибкой.
К сожалению, эту проблему нелегко преодолеть с помощью Postfix 2, поскольку все дерево версий 2.x изначально не поддерживает SMTP на SSL через TCP-порт 465. Наш единственный шанс заставить соединение работать - это либо использовать TCP-порт 587 и использовать STARTTLS, который изначально поддерживается, либо перенаправить соединение через Stunnel или другие инструменты, которые могут выполнять какое-либо SSL-туннелирование.
К счастью, настройка SSL-туннеля - не единственный вариант: мы также можем перейти на Postfix 3 , который имеет встроенную поддержку SMTPS благодаря новой функции TLS Wrapper Mode .
Следующее, что нам нужно сделать, это убедиться, что на нашем сервере не настроено никакое другое программное обеспечение для отправки почты, за исключением случаев, когда мы действительно хотим сохранить Postfix 3 и один (или несколько) из них . В случае, если мы этого не сделаем, мы можем легко удалить их все с помощью следующих команд терминала:
sudo yum remove postfix
sudo yum remove ssmtp
sudo yum remove sendmail
Хотя выполнение ня удалить является необходимым шагом для Postfix - если мы хотим установить более новую версию - мы могли бы также выбрать systemctl отключить и systemctl стоп SSMTP и / или Sendmail вместо того , чтобы удалить их. Единственное, что здесь важно сделать, - это убедиться, что ни один из них не будет запущен и не будет работать, иначе они помешают правильной работе нашего Postfix 3, который скоро будет установлен .
Пришло время установить Postfix 3 . Имя пакета - postfix3 , однако есть большая вероятность, что - если мы просто попробуем sudo yum install postfix3 - мы получим что-то вроде этого:
К сожалению, пакет postfix3 (пока) не включен в репозитории CentOS 7 по умолчанию. Чтобы установить его, мы должны добавить сторонний репозиторий, такой как Ghettoforge , в наш список репо. Опять же, если мы не используем CentOS, мы можем выбрать другое репо на официальной странице Postfix Packages and Ports .
Чтобы добавить репозиторий Ghettoforge в список репозиториев YUM, создайте новый файл / etc / yum .repos .d / gf .repo с помощью nano , vim или любого другого текстового редактора и заполните его следующим содержимым:
[gf]
name=Ghettoforge packages that won't overwrite core distro packages.
mirrorlist=http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7
failovermethod=priority
[gf-plus]
name=Ghettoforge packages that will overwrite core distro packages.
mirrorlist=http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist
# Please read http://ghettoforge.org/index.php/Usage *before* enabling this repository!
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7
failovermethod=priority
Перед использованием этого репо нам также необходимо загрузить файл RPM-GPG-KEY-gf.el7 и сохранить его в нашей папке /etc/pki/rpm-gpg/.
Скачать rpm-gpg-key-gf.el7
После этого мы сможем выполнить команду терминала
sudo yum install postfix3
и установить Postfix 3.6 (на момент написания) за несколько секунд. Не забудьте также выполнить sudo
yum enable postfix
чтобы служба запускалась при каждой загрузке.
Теперь, когда Postfix 3 установлен в нашей системе, нам просто нужно настроить его, чтобы наши сообщения электронной почты отправлялись через внешнюю службу SMTP. Конфигурация включает три файла:
/etc/postfix/master.ср , где нам нужно включить поддержку smtps .
/etc/postfix/sasl_passwd файл, который мы должны создать и заполнить его учетные данные для входа для подключения к нашему внешнему серверу SMTP (ов).
/etc/postfix/main.cf , в котором мы настроим службу и укажем ей, какую службу / учетную запись SMTP использовать.
Откройте /etc/postfix/master.cf и раскомментируйте (или добавьте) следующие строки, чтобы включить поддержку smtps :
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Откройте файл /etc/postfix/sasl_passwd или создайте его, если он еще не существует, и добавьте свои внешние SMTP-серверы и их соответствующие учетные данные для входа, по одному в каждой строке, используя следующий формат:
[smtp.yoursmtp.com]:25 user:password
[smtps.aruba.it]:465 user:password
[smtp.google.com]:587 user:password
Квадратные скобки не обязательны, они просто заставят систему пропустить DNS-зонд для этих серверов.
После этого откройте окно терминала и введите следующую команду, чтобы зашифровать файл паролей:
sudo postmap /etc/postfix/sasl_passwd
Команда зашифрует настройки информации о подключении в виде обычного текста в новый зашифрованный /etc/postfix/sasl_passwd . db файл. Прежде чем идти дальше, было бы разумно - по соображениям безопасности - ограничить права доступа к обоим файлам следующим образом:
sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
Теперь пришло время , чтобы открыть /etc/postfix/main.cf и завершите настройку Postfix, добавив / раскомментировав следующие параметры, и настройте их следующим образом:
# receive mail only from localhost (prevents spammers from using your SMTP service)
inet_interfaces = localhost
# Enable IPv4, and IPv6 if supported
inet_protocols = all
# Set the external SMTP service to connect to (login info must be present in the sasl_passwd.db file)
relayhost = [smtps.your_relay_host.com]:465
# enable SASL authentication
smtp_sasl_auth_enable = yes
# disallow methods that allow anonymous authentication.
smtp_sasl_security_options = noanonymous
# where to find sasl_passwd (the sasl_passwd.db file location)
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Enable STARTTLS encryption
# smtp_use_tls = yes
# TLS Security Level (encrypt = accept all certificates)
smtp_tls_security_level = encrypt
#enable Wrapper mode
smtp_tls_wrappermode = yes
Если у вас есть общедоступное имя хоста, которое вы хотите отображать в почтовом заголовке Return-Path , не помешает также установить параметры myhostname и mydomain следующим образом:
myhostname = www.yourserverhostname.com
mydomain = yourserverhostname.com
Мы готовы к пробному запуску, чтобы убедиться, что все работает правильно.
Перед этим обязательно перезапустите службу Postfix и перезагрузите конфигурацию, введя следующие команды:
systemctl restart postfix
postfix reload
После этого мы можем отправить тестовое электронное письмо на реальный адрес электронной почты, находящийся под нашим контролем, следующим образом:
# sendmail test@email.com
From: sender@email.com
Subject: Postfix 3 Test
Hello there,
If you read this, it means that everything is working properly!
.
Сразу после этого мы можем проверить свой почтовый ящик и убедиться, что письмо отправлено.
Если вы не получили электронное письмо, лучшее, что вы можете сделать, это проверить файл журнала постфикса по следующему пути:
/var/www/log
И посмотрите, что происходит не так. Например, если вы найдете что-то вроде этого:
status=bounced (unknown user: "target")
Это, вероятно, означает, что вы настроили свой постфикс для использования значения myhostname и / или mydomain, которое соответствует части домена целевой электронной почты, тем самым заставляя его искать локального целевого пользователя вместо того, чтобы полагаться на электронную почту удаленно. Чтобы исправить это, замените эти значения или добавьте резервный вариант, который сообщит postfix, что делать, если нет локальных пользователей, соответствующих этому имени:
fallback_transport = relay
Сразу после этого перезапустите postfix.
Вот и все: я искренне надеюсь, что это руководство поможет другим системным администраторам, которые хотят установить Postfix в своей системе!
О дальнейшей настройке вы можете почитать в статье "Настройка Postfix3 в Centos7"