Postfix – это агент пересылки сообщений (англ. Mail Transfer Agent, или MTA), приложение для отправки и получения электронной почты. Данное руководство поможет установить и настроить Postfix только для отправки сообщений локальных приложений (то есть, приложений, установленных на одном сервере с Postfix).
Зачем это нужно?
При использовании стороннего поставщика услуг электронной почты нет никакой необходимости запускать собственный почтовый сервер. Если же на облачном сервере установлены приложения, которым необходимо отправлять уведомления по электронной почте, то локальный SMTP-сервер передачи сообщений будет отличной альтернативой стороннему поставщику услуг электронной почты и полномасштабному SMTP-серверу.
Требования
- Настроенный сервер Ubuntu 16.04 (инструкции по настройке можно найти здесь).
- Не-root пользователь с доступом к sudo.
- Валидный домен (в руководстве используется условный домен example.com).
Примечание: Имя хоста сервера должно соответствовать этому домену или поддомену. Чтобы проверить имя хоста сервера, введите в командную строку hostname. Вывод должен совпадать с именем сервера, которое он получил при создании.
1: Установка Postfix
Чтобы установить Postfix, а заодно и ряд других программ, необходимых для настройки почты, просто установите пакет mailutils.
Обновите индекс пакетов:
sudo apt-get update
Пакет mailtuils установит Postfix и несколько дополнительных программ:
sudo apt install mailutils
В конце установки программа предложит выбрать тип настройки. Рекомендуется выбрать стандартную опцию Internet Site. Для этого нажмите TAB и ENTER.
Please select the mail configuration type that best meets your needs.
[…]
General type of mail configuration:
No configuration
Internet site
Internet with smarthost
Satellite system
Local only
После этого программа предложит выбрать имя почты, System mail name. Это поле должно совпадать с именем сервера, которое вы выбрали при его создании. Укажите имя, а затем нажмите TAB и ENTER. Если в поле автоматически введён поддомен типа subdomain.example.com, замените его на домен example.com.
The ‘mail name’ is the domain name used to ‘qualify’ _ALL_ mail addresses without a domain name.
[…]
System mail name:
2: Настройка Postfix
Теперь нужно настроить Postfix для отправки сообщений с локального хоста.
Для этого Postfix должен быть настроен на прослушивание только интерфейса внутренней петли (loopback interface) – это виртуальный сетевой интерфейс, который используется сервером для внутреннего взаимодействия. Откройте конфигурационный файл Postfix в текстовом редакторе:
sudo nano /etc/postfix/main.cf
Найдите раздел:
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .
Измените значение строки inet_interfaces = all на loopback-only.
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .
После этого нужно отредактировать директиву mydestination, которая задаёт список доменов, почта которых должна быть доставлена через локальный агент доставки local_transport. По умолчанию список выглядит примерно так:
/etc/postfix/main.cf
. . .
mydestination = $myhostname, example.com, localhost.com, , localhost
. . .
Рекомендуется вместо стандартного списка использовать этот:
/etc/postfix/main.cf
. . .
mydestination = $myhostname, localhost.$mydomain, $mydomain
. . .
Сохраните и закройте файл.
Примечание: Если на одном сервере вы разместили несколько доменов, можно добавить остальные домены в настройки Postfix (mydestination). К сожалению, это потребует дополнительной настройки, что выходит за рамки данного руководства.
Перезапустите Postfix:
sudo systemctl restart postfix
3: Тестирование SMTP-сервера
Теперь необходимо проверить, может ли Postfix отправлять сообщения на внешний электронный адрес. Для этого используется команда mail, которая также входит в пакет mailutils.
Чтобы отправить тестовое сообщение, введите:
echo "This is the body of the email" | mail -s "This is the subject line" your_email_address
Примечание: Укажите свою тему и тело сообщения. Вместо your_email_address используйте валидный адрес электронной почты.
Проверьте почтовый ящик, на который было отправлено сообщение. Если отправленное сообщение не появилось, проверьте папку спама.
При такой настройке в поле From будет указан адрес user@example.com, где user – имя пользователя системы Linux, а example.com – имя хоста. Если вы измените имя пользователя, адрес в поле From тоже изменится.
4: Почтовый форвардинг
В завершение нужно настроить пересылку почты (или форвардинг), чтобы сервер мог предавать сообщения, отправленные пользователю root, на ваш персональный внешний адрес.
Чтобы Postfix отправлял сгенерированные системой сообщения на ваш почтовый адрес, отредактируйте файл /etc/aliases.
sudo nano /etc/aliases
В стандартной установке Ubuntu 16.04 этот файл выглядит так:
# See man 5 aliases for format
postmaster: root
Эта настройка передает сообщения системы пользователю root. Теперь нужно сделать так, чтобы сообщения перенаправлялись на ваш адрес электронной почты. Для этого внесите в файл строку:
/etc/aliases
# See man 5 aliases for format
postmaster: root
root: your_email_address
Замените your_email_address своим личным адресом электронной почты. Сохраните и закройте файл. Чтобы изменения вступили в силу, выполните следующую команду:
sudo newaliases
Теперь протестируйте форвардинг, отправив сообщение пользователю root:
echo "This is the body of the email" | mail -s "This is the subject line" root
Это сообщение должно появиться в вашем почтовом ящике (если нет – проверьте папку спама).
Заключение
После установки сервера Postfix рекомендуется защитить сервер от спама.
Если вы отправляете сообщения потенциальным пользователям сайта (например, формы регистрации), настройте запись SPF и DKIM. Информацию об этом можно найти в статьях:
- Предотвращение спуфинга адресов и защита электронной почты при помощи SPF-записи
- Установка и настройка DKIM для Postfix на Debian Wheezy (эти инструкции подойдут и для Ubuntu 16.04)