Как настроить ретрансляцию почты с Postfix и Mailgun в Ubuntu 16.04

Вступление

Настройка SMTP-сервера не является задачей для слабонервных. Мало того, что безопасность является серьезной проблемой, но доставка почты - еще большая проблема. Обеспечение высокой доставляемости электронной почты с собственного SMTP-сервера, не отмеченного как спам, не очень выполнимо из-за высокой степени защиты от спама, предоставляемой большинством поставщиков электронной почты сегодня.

Ретрансляция почты решает обе эти проблемы. Настроить его гораздо проще, чем полноценный SMTP-сервер, поскольку вы просто перенаправляете любую электронную почту, сгенерированную вашим сервером, на SMTP-сервер с профессиональным управлением. В результате вы будете свободны от большинства проблем с доставкой электронной почты.

Существует два типа почтовых реле: open и closed. Открытое почтовое ретранслятор направляет почту как из внешних источников, так и из внутренней почты сервера Этот тип реле созрел для злоупотреблений со стороны спамеров. Закрытый ретранслятор только пересылает сообщения, сгенерированные внутри нашего сервера и внутренней сети.

Хотя вы можете использовать любой внешний SMTP-сервер для маршрутизации электронной почты, Mailgun предлагает много преимуществ по сравнению с другими SMTP-серверами. Это бесплатно до 10 000 электронных писем в месяц, это невероятно надежно и позволяет отправлять почту с отдельного домена. Используя отдельный домен от обычного почтового домена для бизнеса, вы добавляете еще один уровень защиты от случайного попадания в черный список.

Из этого туториала Вы узнаете, как создать и настроить бесплатную учетную запись и поддомен Mailgun, настроить необходимые записи DNS DigitalOcean и настроить закрытую ретрансляцию почты с использованием Postfix.

Предпосылки

Прежде чем начать это руководство, вам понадобится следующее:

  • Один сервер Ubuntu 16.04, настроенный по следующему адресу https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04, - руководство по первоначальной настройке сервера Ubuntu 16.04], включая sudo пользователь root и брандмауэр.

  • Зарегистрированное доменное имя, например + example.com +, указывающее на серверы имен DigitalOcean. Вы можете настроить это, следуя инструкциям How для настройки имени хоста с помощью DigitalOcean .

  • Обычная учетная запись электронной почты, на которую вы можете отправлять текстовые сообщения.

Шаг 1 - Настройка учетной записи Mailgun

Создайте новую учетную запись на https://mailgun.com/signup. После завершения регистрации войдите в систему и перейдите на страницу dashboard и нажмите ссылку * Домены * в меню в верхней части страницы.

Вы увидите домен песочницы, который Mailgun создал для вас.

изображение: https: //assets.digitalocean.com/articles/postfix_mailgun_mailrelay_1604/Tr905Cd.png [Исходный домен песочницы]

Вместо использования песочницы создайте поддомен для Mailgun, нажав кнопку * Добавить новый домен *. Вы можете назвать этот поддомен как угодно, например + mailgun.example.com + или + bulkemail.example.com +. Этот учебник будет использовать + mg.example1.com + в своих примерах.

После создания субдомена ваша страница * Domains * должна выглядеть следующим образом:

изображение: https: //assets.digitalocean.com/articles/postfix_mailgun_mailrelay_1604/arxrFNE.png [после добавления поддомена]

Далее, на страницу вашего субдомена, нажав на ссылку для его имени. Вы увидите три набора записей DNS, как показано на следующем рисунке:

изображение: https: //assets.digitalocean.com/articles/postfix_mailgun_mailrelay_1604/ErOxwM6.png [DNS-записи субдомена]

Вам нужно будет добавить эти записи DNS для вашего домена на панели мониторинга DigitalOcean. Записи DNS для * Отправка * и * Отслеживание * являются обязательными, но вы можете игнорировать записи для * Получение *. Вы будете использовать информацию на этой странице для создания надлежащих записей DNS на следующем шаге, поэтому держите эту страницу открытой, чтобы вы могли скопировать значения для этих записей.

Шаг 2 - Настройка записей DNS на DigitalOcean

Войдите в свою учетную запись DigitalOcean и выберите меню * Networking * на панели инструментов. Затем введите поддомен, который вы создали в Mailgun, в поле * Domain * и выберите каплю, для которой вы хотите настроить ретрансляцию почты. Затем нажмите кнопку * Создать запись *.

изображение: https: //assets.digitalocean.com/articles/postfix_mailgun_mailrelay_1604/InkTv0R.png [Добавление поддомена в DigitalOcean]

Новый домен появится в вашем списке доменов. Нажмите на него, чтобы отобразить его страницу редактирования. В дополнение к уже созданным записям вам необходимо добавить две записи * TXT * и запись * CNAME *, указанную Mailgun. Вы также можете добавить записи * MX *, но они не нужны для ретрансляции почты. При создании своих записей обратитесь к скриншоту этого примера:

изображение: https: //assets.digitalocean.com/articles/postfix_mailgun_mailrelay_1604/WxbLBE72.png [DNS-записи, которые необходимо добавить]

Добавьте следующие записи, используя информацию, предоставленную Mailgun, которую вы получили на шаге 1:

  • Создайте новую запись * CNAME *:

  • Введите + email + для * name * и + mailgun.org. + Для * hostname *. Точка в конце * hostname * обязательна.

  • Создайте запись * TXT *:

  • Введите + @ + для * имени *.

  • Для * Text * введите текст для первой записи * TXT * из Mailgun в двойных кавычках. В этом примере это " v = spf1 include: mailgun.org ~ all ", но вы должны проверить это, посмотрев на значение, предоставленное Mailgun.

  • Создайте еще одну * TXT * запись:

  • Введите жирную часть * имени хоста * из второй записи * txt *, предоставленной Mailgun для поля * name *. В этом примере это + mallo._domainkey +, но оно может отличаться для вашего домена Mailgun.

  • Для * text * скопируйте все значение, предоставленное Mailgun, и заключите его в двойные кавычки. Это должно выглядеть как " k = rsa; p = MIGfMA0G ... AQAB ".

Mailgun должен проверить настройки вашего домена, прежде чем вы сможете продолжить. Вы можете дождаться обновления записей DNS или вернуться на страницу своего домена в Mailgun, найти раздел * Проверка домена и DNS * и нажать кнопку * Проверить записи DNS сейчас * Когда ваши записи DNS будут проверены, вы получите увидеть зеленые флажки по проверенным записям.

Обновление записей DNS может занять некоторое время. Время обновления может варьироваться от нескольких минут до часов.

Пока вы ждете обновления DNS, просмотрите и скопируйте свои учетные данные SMTP со страницы вашего домена MailGun. Вам понадобятся эти значения в ближайшее время. В разделе * Информация о домене * ваше имя пользователя указано рядом с * Имя входа SMTP по умолчанию *, а пароль - рядом с * Пароль по умолчанию *. При желании вы также можете изменить эти значения, нажав на ссылку * Управление учетными данными SMTP *.

Давайте установим Postfix дальше.

Шаг 3 - Установка и настройка Postfix

Для установки Postfix мы будем использовать встроенный менеджер pacakge.

Подключитесь к вашему серверу как пользователь без полномочий root:

ssh @

Обычно процесс установки Postfix использует некоторые интерактивные экраны, чтобы запросить у вас информацию. Чтобы предотвратить возможные ошибки во время этой настройки, давайте предварительно сконфигурируем эту информацию, прежде чем мы начнем процесс установки.

Сначала настройте Postfix для работы в качестве почтового ретранслятора:

sudo debconf-set-selections <<< "postfix postfix/main_mailer_type select Satellite system"

Затем скажите Postfix использовать имя хоста вашего сервера для имени хоста почтового сервера:

sudo debconf-set-selections <<< "postfix postfix/mailname string $HOSTNAME"

Затем настройте Postfix для использования SMTP-сервера Mailgun для ретранслируемой почты:

sudo debconf-set-selections <<< "postfix postfix/relayhost string smtp.mailgun.org"

С этими настройками установите Postfix:

sudo apt -y install postfix

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

Создайте и отредактируйте новый файл учетных данных:

sudo nano /etc/postfix/sasl_passwd

Добавьте следующую строку в новый файл:

/ И т.д. / постфикса / sasl_password

smtp.mailgun.org @:

Затем защитите файл, ограничив разрешения на чтение и запись для * root *, и используйте команду + postmap +, чтобы обновить таблицы поиска Postfix для использования этого нового файла:

sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

Затем улучшите безопасность почтового ретранслятора, запретив анонимные входы в систему и указав файл учетных данных для обеспечения безопасного входа в Mailgun. Отредактируйте файл конфигурации Postfix:

sudo nano /etc/postfix/main.cf

и добавьте эти строки в конец файла:

/etc/postfix/main.cf

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = AUTH LOGIN

Теперь перезапустите Postfix для загрузки новой конфигурации:

sudo systemctl restart postfix

Вы также должны убедиться, что входящие SMTP-порты не открыты, выполнив эту команду для проверки состояния вашего брандмауэра:

sudo ufw status

Вывод должен выглядеть примерно так:

OutputTo                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)

Вывод должен т не содержать ни одного из этих портов в столбце * To *: + 25 +, + 465 + или + 587 +. Эти порты используются для доступа SMTP, и вы не хотите разрешать входящему трафику использовать ваш почтовый ретранслятор. Если эти порты действительно появляются в выходных данных, просмотрите https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-14-04 ] чтобы узнать, как удалить правила или явно запретить доступ.

Обычно, чтобы настроить SMTP-сервер с использованием Postfix, имя хоста вашего сервера должно совпадать с ful-квалифицированным именем домена вашего сайта (FQDN). Если имя хоста вашего сервера является полным доменным именем, вы можете перейти к шагу 5. В противном случае читайте дальше.

Шаг 4 - Настройка сопоставления доменов

Поскольку мы используем Mailgun для нашего SMTP-сервера вместо Postfix, имя хоста вашего сервера не обязательно должно соответствовать полному доменному имени, которое вы используете для своей электронной почты. Это очень распространено. Например, если ваш сервер является сервером базы данных или сервером мониторинга, он может вообще не иметь полного доменного имени. Мы можем настроить mapping table, который заменяет один адрес электронной почты на другой.

В этом случае мы собираемся сопоставить вашу учетную запись электронной почты пользователя Linux с любым именем пользователя в вашем домене MailGun.

Создайте и отредактируйте новую таблицу сопоставления, создав файл + / etc / postfix / generic +:

sudo nano /etc/postfix/generic

Добавьте эту строку в файл, который сопоставляет пользователя * sammy * на вашем компьютере с Mailgun.

/ И т.д. / постфикса / общее

@ @

Вы можете заменить + sender + на любое другое имя, например + wordpress + или + no-reply +. Единственная часть, которая действительно имеет значение, это + your_subdomain_for_mailgun +, который должен быть вашим поддоменом Mailgun, который вы определили на шаге 1.

Вы можете указать несколько пользователей, создав несколько строк, подобных этой.

Теперь добавьте это отображение в таблицы поиска Postfix с помощью команды + postmap +:

sudo postmap /etc/postfix/generic

Затем отредактируйте файл конфигурации Postfix, чтобы добавить файл сопоставления:

sudo nano /etc/postfix/main.cf

Добавьте эту строку в конец файла:

/etc/postfix/main.cf

smtp_generic_maps = hash:

Наконец, перезапустите Postfix, чтобы внести изменения:

sudo systemctl restart postfix

Давайте проверим ретрансляцию почты, чтобы убедиться, что все настроено правильно.

Шаг 5 - Тестирование вашего почтового ретранслятора

Для проверки вашего нового почтового реле вы отправите сообщение на свой личный адрес электронной почты с вашего сервера. Установите + mailutils +, чтобы вы могли быстро отправить тестовое письмо.

sudo apt -y install mailutils

Затем используйте + mailutils + для создания и отправки сообщения на вашу личную учетную запись электронной почты от текущего пользователя на сервере.

mail -s "Test mail"  <<< "A test message using Mailgun"

Вы можете изменить сообщение на что угодно.

Проверьте свой почтовый клиент и посмотрите, получили ли вы тестовое сообщение. Если вы это сделали, то поздравляем вас с успешной настройкой почтовой ретрансляции. Если вы этого не сделали, то читайте дальше, чтобы устранить неполадки.

Шаг 6 - Устранение неполадок при пересылке почты

Хотя есть ряд вещей, которые могут пойти не так, например, сделать ошибку на любом из предыдущих шагов, вот несколько общих проблем, с которыми вы можете столкнуться.

Сначала убедитесь, что Mailgun проверил ваши записи DNS. Ничего не может произойти, пока этот шаг не будет успешным. Дважды проверьте пользовательский интерфейс Mailgun и убедитесь, что домен был проверен.

Затем, дважды проверьте ваш файл учетных данных (+ / etc / postfix / sasl_passwd +). Убедитесь, что ваши имя пользователя и пароль совпадают с соответствующими именами для соответствующего субдомена в Mailgun. Не используйте свои учетные данные Mailgun, так как они не будут работать. Используйте определенные учетные данные, которые Mailgun предоставляет для вашего субдомена.

Проверьте свои журналы электронной почты для любых полезных сообщений об ошибках. Есть два места, которые вы хотите проверить. Сначала проверьте журнал на вашем сервере, который вы можете найти в файле + / var / log / mail.log +. Вы можете просмотреть последние записи с

tail -f /var/log/mail.log

Это отображает последние несколько строк вашего файла журнала, но также «следует» за выводом, означая, что любые новые записи журнала будут отображаться по мере их записи в журнал. Посмотрите на вывод сообщений об ошибках, которые помогут вам диагностировать любые проблемы. Например, неверный пароль для Mailgun покажет эту ошибку:

Output> Nov 1 16:07:45 cart-1268 postfix/smtp[30082]: 0E8062038A: to=<[email protected]>, relay=smtp.mailgun.org[173.203.37.114]:25, delay=2.3, delays=0.02/0/2.3/0, dsn=4.7.0, status=deferred (SASL authentication failed; server smtp.mailgun.org[173.203.37.114] said: )

В дополнение к вашему серверу Mailgun также регистрирует транзакции. Посетите панель инструментов Mailgun и выберите меню * Журналы *, чтобы просмотреть любые сообщения об ошибках, которые могли помешать доставке сообщения.

Наконец, если имя хоста вашего сервера не является полным доменным именем, убедитесь, что вы выполнили шаг 4, чтобы создать сопоставления для ваших пользователей, чтобы они могли отправлять сообщения.

Заключение

Поздравляем с установкой вашего первого почтового ретранслятора с помощью Mailgun. Теперь у вас есть безопасный метод отправки всех видов электронной почты с вашего сервера, от внутренних сообщений и результатов задач + cron +, до информационных бюллетеней клиентов или сообщений из вашего веб-приложения.

Если у вас есть дополнительные серверы, которые вы хотите использовать для отправки почты, вам нужно всего лишь повторить шаги 3 и 4 на каждом сервере. Вы можете повторно использовать один и тот же домен MailGun для любого количества серверов. Вы также можете настроить несколько доменов, чтобы дифференцировать вашу электронную почту в зависимости от использования.

Распространенным сценарием является использование двух доменов; один для внутренней почты сервера и другой для массовой рассылки. Внутренняя почта сервера - это все, что может быть отправлено из одной из программ вашего сервера, таких как задача + cron + или Wordpress. Массовая почта - это когда вы отправляете сообщение всему списку рассылки. Этот тип электронной почты особенно подвержен занесению в черный список из-за спама, поэтому вы, вероятно, захотите использовать домен, который вы можете удалить, если он заблокирован, при этом сохраняя другие ваши домены. В любом случае, при отправке массовых писем обязательно используйте хорошие методы работы с электронной почтой. Для получения дополнительной информации см. Http://blog.mailgun.com/art-of-inboxing/[The Art of Inboxing].

Чтобы добавить дополнительные почтовые домены, выполните шаги 1 и 2 снова для каждого нового домена, а затем отредактируйте + / etc / postfix / sasl_passwd + и + / etc / postfix / generic + при необходимости. Базовая конфигурация Postfix остается прежней.

Приятного письма!

Related