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

  1. Вступление Настройка SMTP-сервера не является задачей для слабонервных. Мало того, что безопасность...
  2. Шаг 1 - Настройка учетной записи Mailgun
  3. Шаг 2 - Настройка записей DNS на DigitalOcean
  4. Шаг 3 - Установка и настройка Postfix
  5. Шаг 4 - Настройка сопоставления доменов
  6. Шаг 5 - Тестирование вашего почтового ретранслятора
  7. Шаг 6 - Устранение неполадок при пересылке почты
  8. Заключение

Вступление

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

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

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

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

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

Предпосылки

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Создайте новую запись CNAME :
    • Введите адрес электронной почты для имени и mailgun.org. для имени хоста . Точка в конце имени хоста обязательна.
  • Создайте запись TXT :
    • Введите @ для имени .
    • В качестве текста введите текст для первой записи TXT из Mailgun в двойных кавычках. В этом примере это «v = spf1 include: mailgun.org ~ all», но вы должны проверить это, посмотрев на значение, предоставленное Mailgun.
  • Создайте еще одну запись TXT :
    • Введите жирную часть имени хоста из второй записи txt, предоставленной Mailgun для поля имени . В этом примере это mallo._domainkey, но он может отличаться для вашего домена Mailgun.
    • Для текста скопируйте все значение, предоставленное Mailgun, и заключите его в двойные кавычки. Это должно выглядеть как "k = rsa; p = MIGfMA0G ... AQAB".

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

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

Примечание. Если ваши записи DNS не проверяются в Mailgun, дважды проверьте введенные вами значения и убедитесь, что они совпадают со страницами вашего домена Mailgun. Не забудьте поместить значения записи TXT в двойные кавычки ("). Кроме того, первое (более короткое) имя записи TXT должно быть @, а не имя хоста, предоставленное Mailgun.

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

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

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

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

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

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

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

  • sudo debconf-set-selections <<< "postfix postfix / main_mailer_type select Спутниковая система"

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

  • sudo debconf-set-selections <<< "постфикс postfix / mailname строка $ HOSTNAME"

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

  • sudo debconf-set-selections <<< "постфикс postfix / relayhost строка smtp.mailgun.org"

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

  • sudo apt -y установить postfix

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

Примечание. Каждый поддомен Mailgun имеет свои учетные данные. Для получения дополнительной информации см. Где я могу найти мой ключ API и учетные данные SMTP в документации Mailgun.

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

  • sudo nano / etc / postfix / sasl_passwd

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

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

smtp.mailgun.org your_mailgun_smtp_user @your_subdomain_for_mailgun: your_mailgun_smtp_password

Затем защитите файл, ограничив права на чтение и запись для 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 = безымянный smtp_sasl_tls_security_options = безымянный smtp_sasl_mechanism_H

Примечание. В Postfix предусмотрены различные меры безопасности для предотвращения использования вашей почтовой пересылки спам-ботами (см. http://www.postfix.org/SMTPD ACCESS README.html для дополнительной информации). В частности, эти две строки в main.c ограничивают использование почтового ретранслятора для вашей локальной сети и пользователей, авторизованных SASL, которые вы определили ранее.

/etc/postfix/main.cf

smtpd_relay_restrictions = allow_mynetworks allow_sasl_authenticated defer_unauth_destination

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

  • sudo systemctl перезапустить постфикс

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

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


Выход

К действию с - ------ ---- 22 РАЗРЕШИТЬ В любом месте 22 (v6) РАЗРЕШИТЬ В любом месте (v6)

Выходные данные не должны содержать ни одного из этих портов в столбце « Кому» : 25, 465 или 587. Эти порты используются для доступа SMTP, и вы не хотите разрешать входящему трафику использовать ваш почтовый ретранслятор. Если эти порты появляются в выходных данных, просмотрите этот урок чтобы узнать, как удалить правила или явно запретить доступ.

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

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

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

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

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

  • sudo nano / etc / postfix / generic

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

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

sammy @your_hostname отправитель @your_subdomain_for_mailgun

Вы можете заменить отправителя на любое другое имя, например 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: / etc / postfix / generic

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

  • sudo systemctl перезапустить постфикс

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

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

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

  • sudo apt -y установить mailutils

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

  • mail -s "Test mail" your_email_address <<< "Тестовое сообщение с использованием Mailgun"

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

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

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

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

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

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

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

  • tail -f /var/log/mail.log

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


Выход

> 1 ноября 16:07:45 cart-1268 postfix / smtp [30082]: 0E8062038A: to = <[email protected]>, relay = smtp.mailgun.org [173.203.37.114]: 25, задержка = 2,3, задержки = 0.02 / 0 / 2.3 / 0, dsn = 4.7.0, статус = отложено (аутентификация SASL не пройдена; сервер smtp.mailgun.org [173.203.37.114] сказал: 535 5.7.0 Mailgun не любит ваш логин или пароль)

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

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

Заключение

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

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

Распространенным сценарием является использование двух доменов; один для внутренней почты сервера и другой для массовой рассылки. Внутренняя почта сервера - это все, что может быть отправлено из одной из программ вашего сервера, таких как задача cron или Wordpress. Массовая почта - это когда вы отправляете сообщение всему списку рассылки. Этот тип электронной почты особенно подвержен занесению в черный список из-за спама, поэтому вы, вероятно, захотите использовать домен, который вы можете удалить, если он заблокирован, при этом сохраняя другие ваши домены. В любом случае, при отправке массовых писем обязательно используйте хорошие методы работы с электронной почтой. Для получения дополнительной информации см. Искусство Inboxing ,

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

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