» » » Postfix: пересылка почты через реле

Postfix: пересылка почты через реле

Author: Tatyana dated 28-09-2019, 14:54
  • Dislike
  • 0
  • Like
Postfix: пересылка почты через релеPostfix — популярный и достаточно надёжный почтовый сервер, чаще всего используемый для отправки почты. Данный функционал работает «из коробки» практически во всех популярных дистрибутивах Linux.

Не смотря на то, что Postfix работает сразу после установки и работает хорошо, если его слегка настроить, большая часть отправленной с него почты попадает в «спам» на стороне сервера получателя. Даже если у вас правильно настроены DNS домена, этого не достаточно. Некоторые почтовые сервисы блокируют почту, передаваемую в открытом виде. Настройка шифрования же — занятие муторное и неоправданное с финансовой точки зрения, так как заверенный сертификат стоит денег. Если вы не админ корпоративного сервера, то перспектива платить за сертификат, дабы ваш Wordpress мог отправлять 5-10 писем в сутки, греет не многих.

Ещё одно препятствие между вами и вашей аудиторией — это блокировка 25-го порта большинством провайдеров. Из-за низких цен и переизбытка предложений, можно целый месяц рассылать спам во все уголки Сети, заплатив около пяти долларов за слабенький VPS. В связи с этим хост-провайдеры, дорожащие своей репутацией, блокируют 25-й порт. Если не всем поголовно, то как минимум новым клиентам. И это в последнее время стало, практически, стандартом в индустрии.

К счастью Postfix может отправлять почту не только через 25-й tcp порт. Postfix может отправлять почту не напрямую, а через реле. В случае блокировки 25-го порта, основным условием является то, что принимающее реле работает с другим портом. (Практически все популярные почтовые сервисы).

В данном примере я использую профессиональный сервис обработки почты Mailgun. Он бесплатен, если вы отправляете не более 10000 сообщений в месяц. Вообще, настройки реле в Postfix достаточно просты и можно использовать любой почтовый сервис, нацеленный на конечного пользователя (Gmail, Yahoo!, Yandex и прочие). Если сервис умеет работать с десктопными почтовыми программами, то сможет получать почту и от Postfix. Но в случае с Mailgun вы можете использовать свой домен. После подключения домена к Mailgun, в качестве отправного почтового адреса можно использовать любой адрес вида что_угодно@ваш_домен без дополнительных настроек. В случае же, например, с сервисом Google Apps или подобными, вы сначала должны создать полноценный аккаунт с почтовым ящиком, логином, паролем и так далее.

После регистрации в Mailgun и входа в панель управления, слева вы увидите вкладку «Sanding», в ней вкладку «Domains».
Там уже есть один домен вида sandbox85bfgk2706b4f9a96546412153a900р58a.mailgun.org. Это тестовый домен. Для подключения своего домена нужно указать номер своей банковской карты. Это ни к чему не обязывает и сервис будет по прежнему бесплатен в пределах 10000 писем в месяц. Необходимость в подобном «апгрейде» аккаунта они объясняют всё той же борьбой со спамерами.

После указания средства оплаты во вкладке «Domains» появится кнопка «Add New Domain». Вы должны указать свой домен. Сервис рекомендует использовать домены третьего уровня. Это удобно если у вас уже настроена почта на домене, или если вы хотите разграничить корреспонденцию (name@sales.domain.ltd, name@feedback.domain.ltd и так далее).

Далее вам отобразятся NS записи, которые следует внести на стороне вашего DNS сервера (на стороне регистратора, или DNS сервиса, если вы используете сторонний). После внесения соответствующих записей подтвердите это на стороне Mailgun и дождитесь окончания проверки. Это стандартная процедура при изменениях в DNS и может занять какое-то время. Настройки домена находятся во вкладке «Domain Settings». Там же статус DNS записей и данные для подключения к SMTP серверу (SMTP credentials): логин вида postmaster@your.domain.ltd и кнопка «Reset Password» для сброса пароля. Сам пароль отображается только при его генерации. Нужно нажать эту кнопку и скопировать пароль в удобное место. После чего он больше отображаться не будет. Так же можно создать нового SMPT пользователя с помощью кнопки «New SMTP User».

На своём сервере устанавливаем Postfix. В моём случае сервер работает под управлением Debian 10.
sudo apt install postfix


В процессе установки, на вопрос установщика по поводу конфигурации, указываем «Internet Site». То есть Postfix будет отправлять почту, полученную из функции PHP mail().

После установки редактируем файл «main.cf».
sudo nano /etc/postfix/main.cf


Убедитесь в наличии строки
myorigin = /etc/mailname


В строку, начинающуюся с «mydestination =» добавляем домен, подключенный к Mailgun. Пример:
mydestination = $myhostname, mailgun.mydomain.ltd, myhostname.ltd, localhost.myhostname.ltd, localhost


Где «mailgun.mydomain.ltd» - ваш домен, подключенный к Mailgun.

Строка «relayhost» должна выглядеть следующим образом:
relayhost = [smtp.mailgun.org]:587


Далее, в конец файла добавляем следующие строки:
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_password_maps = static:postmaster@mailgun.mydomain.ltd:mailgun_password


Где в последней строке логин и пароль для подключения к SMTP серверу Mailgun.

Тут есть небольшой нюанс. Более «правильно», когда логин и пароль хранятся в отдельном файле, закрытом для чтения всем, кроме рута. Однако Postfix по каким-то причинам не получает эти данные, если строка «relayhost» выглядит так, как в этом примере, с указанием порта. Если 25-й порт не заблокирован, то конфигурация может выглядеть так:

.....

relayhost = smtp.mailgun.org

.....

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_password_maps = static:/etc/postfix/sasl_passwd


Где «/etc/postfix/sasl_passwd» - путь, указывающий на файл с логином и паролем.

Если второй вариант более предпочтителен, то создаём соответствующий файл:

sudo nano /etc/postfix/sasl_passwd


И добавляем в него строку следующего содержания:
smtp.mailgun.org   postmaster@mailgun.mydomain.ltd:mailgun_password


То есть указываем адрес SMTP сервера, логин и пароль для подключения к нему.

Выставляем права и подключаем эту конфигурацию.
sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd


Файл «/etc/postfix/generic» содержит в себе карту вида «пользователь — почтовый адрес». Пример:
root@local_server_hostname  from-root@mailgun.mydomain.ltd
user2@local_server_hostname  name2@mailgun.mydomain.ltd
user3@local_server_hostname  name3@mailgun.mydomain.ltd


То есть таким образом можно указать отдельный адрес для каждого пользователя в системе. Если ваш вебсервер работает от имени пользователя www-data, то можно указать это в этом файле.
www-data@local_server_hostname   any_name@mailgun.mydomain.ltd


Где «local_server_hostname» - имя хоста вашего сервера, mailgun.mydomain.ltd — домен, подключенный к Mailgun. Таким образом вся почта, отправленная вашим вебсервером будет приходить с соответствующего адреса.

После создания файла выполняем следующую команду.
sudo postmap /etc/postfix/generic


Редактируем файл «mailname», убираем из него то, что там уже есть и указываем в нём домен, подключенный к Mailgun.
sudo nano /etc/mailname


После того, как всё настроено, перезагружаем Postfix.
sudo systemctl restart postfix


Проверить работу сервера можно следующей командой:
mail -s "Test mail" your_email_address <<< "A test message using Mailgun"


Где «your_email_address» ваш действующий почтовый адрес, на который вы получите письмо с заголовком «Test mail» и текстом «A test message using Mailgun».

В этом примере используется сервис Mailgun, но как сказано выше, Postfix достаточно прост в настройках и таким образом можно настроить практически любой SMTP сервер.
Like Dislike

___
Tatyana K.



Tags: Linux Postfix


 
  • Creative Commons Licence
  • Norton Safeweb
  • Powered by MariaDB
  • Powered by Debian
  • Website Uptime Monitoring By ServiceUptime.com
  • Yandex.Metrica