Postfix — это популярное бесплатное программное обеспечение с открытым исходным кодом, выполняющее функции агента передачи почты (MTA). Задача Postfix — маршрутизация и доставка электронной почты. Помимо классического использования, Postfix также можно настроить для отправки писем только локальными приложениями.
Такое применение Postfix — полезный прием для развертывания в различных ситуациях. Например, его можно использовать при регулярной отправке уведомлений по электронной почте, работе со сторонним поставщиком услуг электронной почты с ограниченным исходящим трафиком и т. д. По сравнению с любым полноценным SMTP сервером, Postfix является более легкой альтернативой, которая в то же время сохраняет все необходимые функции.
В этом руководстве вы узнаете, как установить и настроить Postfix в качестве SMTP-сервера только для отправки на Ubuntu.
Предварительные требования
Чтобы следовать этому руководству, вам необходимо выполнить следующие предварительные требования:
-
Вам необходимо иметь правильно настроенный сервер Ubuntu с доступом к пользователю non-root с правами sudo.
-
Вам также понадобится полностью зарегистрированное доменное имя. Узнайте больше о доменных именах из нашей статьи «Установка SSL-сертификата от коммерческого центра сертификации».
-
Наконец, вам понадобится DNS-запись с доменным именем, указывающим на публичный IP-адрес сервера.
Установка Postfix
Как только предварительные условия будут выполнены, сервер готов к развертыванию Postfix. Самый простой способ установки Postfix — установить пакет mailutils. Он доступен напрямую из официальных репозиториев Ubuntu.
Сначала запустите терминал и обновите базу данных пакетов APT :
|
1 |
sudo apt update |

Затем вы можете установить Postfix:
|
1 |
sudo apt install mailutils |

В процессе установки появится следующее окно конфигурации. Опция по умолчанию — Internet Site. Чтобы подтвердить выбор, нажмите TAB, чтобы переместить курсор в следующий раздел. Затем нажмите Enter:

На следующем шаге будет запрошено системное имя почты (System mail name). Это будет имя, присвоенное серверу во время создания. Как описано в скрипте, если почтовый адрес для локального хоста — «foo@example.org», то системным именем почты будет example.org:

Обратите внимание, что конфигурационный скрипт также можно запустить в любое время позже с помощью следующей команды:
|
1 |
sudo dpkg-reconfigure postfix |
Настройка Postfix
На этом шаге Postfix будет настроен на отправку и получение писем только от localhost. Для этого требуется, чтобы Postfix слушал интерфейс loopback. Это виртуальный сетевой интерфейс, который сервер использует для внутреннего взаимодействия. Затем откройте конфигурационный файл Postfix с помощью текстового редактора по вашему выбору:
|
1 |
sudo nano /etc/postfix/main.cf |
Измените значение inet_interface на loopback-only:

Еще одна директива, которую вам нужно изменить, — это mydestination. Она определяет список доменов, доставка на которые осуществляется через транспорт доставки почты local_transport . Значение по умолчанию будет примерно следующим:

Измените его значение на следующее:
|
1 |
mydestination = localhost.$mydomain, localhost, $myhostname |

Если ваш домен на самом деле является поддоменом, и вы хотите, чтобы электронные письма выглядели так, будто они отправлены с основного домена, добавьте следующую директиву в конец конфигурации Postfix. Она удалит поддомен из адреса электронной почты:
|
1 |
masquerade_domains = <main_domain> |

Чтобы изменения вступили в силу, перезапустите Postfix:
|
1 |
sudo systemctl restart postfix |
Тестирование SMTP-сервера
Если процесс настройки прошел успешно, пришло время его протестировать. Для этого проверьте, может ли Postfix отправить электронное письмо на внешний почтовый ящик с помощью команды mail. Она является частью пакета mailutils :
|
1 |
echo "Test email body" | mail -s "Subject line" <email_address> |
Сообщение должно прийти на указанный адрес электронной почты. На данный момент все отправляемые письма не зашифрованы. Поставщики услуг обычно помечают такие письма как спам, поэтому обязательно проверьте папку со спамом.
Если mail сообщает об ошибке или письмо не пришло по истечении длительного времени, перепроверьте конфигурацию Postfix и убедитесь, что имя сервера и имя хоста настроены правильно. При такой конфигурации письма будут отправляться со следующего адреса:
|
1 |
<username>@<domain> |
Здесь username будет именем пользователя сервера, запустившего команду mail .
Пересылка системной почты
Мы успешно убедились, что почтовый сервер настроен правильно и работает. Теперь его необходимо настроить для пересылки почты для root. Все системные сообщения, отправленные на сервер, будут пересылаться на внешний адрес электронной почты. Для получателей писем файл /etc/aliases содержит список альтернативных имен. Откройте его с помощью любого текстового редактора:
|
1 |
sudo nano /etc/aliases |
По умолчанию он будет выглядеть следующим образом:

В конце файла добавьте следующую строку:
|
1 |
root: <email_address> |

Это указывает на то, что письма, отправленные на root, будут пересылаться на адрес электронной почты. Чтобы изменения вступили в силу, выполните следующую команду. Она перестроит базу данных псевдонимов, которую использует команда mail :
|
1 |
sudo newaliases |
![]()
Затем вам нужно проверить, было ли изменение успешным. Отправьте тестовое письмо на root:
|
1 |
echo "Test root email body" | mail -s "Subject line" root |
Письмо должно прийти на указанный адрес электронной почты. Не забудьте проверить папку со спамом, так как шифрование еще не настроено.
Включение шифрования SMTP
Отправка писем в незашифрованном виде — рискованный шаг. Для обеспечения безопасности необходимо включить шифрование SMTP. Для этого мы запросим бесплатный сертификат TLS от Let’s Encrypt для вашего домена.
Для Ubuntu эту задачу выполняет инструмент Certbot. К счастью, он доступен напрямую из официального репозитория Ubuntu. Установите Certbot с помощью следующей команды:
|
1 |
sudo apt install certbot |

Если на сервере настроен UFW, необходимо открыть порт 80, чтобы можно было выполнить проверку домена. Выполните следующую команду, чтобы включить его:
|
1 |
sudo ufw allow 80 |

Теперь запустите Certbot для генерации сертификата. Это даст команду Certbot выпустить сертификаты с 4096-битным ключом RSA. Проверка будет проходить через порт 80 (HTTP):
|
1 |
sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d <domain> |
Вывод будет примерно следующим:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for '<domain>' Ожидание для проверки... Очистка up проверок ВАЖНЫЕ ПРИМЕЧАНИЯ: - Поздравляем! Ваш сертификат и цепочка были сохранены в по адресу: /etc/letsencrypt/live/<domain>/fullchain.pem Ваш ключ файл был сохранен в по адресу: /etc/letsencrypt/live/<domain>/privkey.pem Ваш сертификат истекает expire в 2020-07-11. Чтобы получить a новую или измененную версию этого сертификата в будущем просто запустите , снова запустите certbot снова. Чтобы не-интерактивно обновить *все* ваши сертификаты, выполните, запустите "certbot renew" - Если вам нравится Certbot, пожалуйста рассмотрите возможность поддержать нашу работу : пожертвованием в ISRG / Let's Encrypt: https://letsencrypt.org/donate пожертвованием в EFF: https://eff.org/donate-le |
Ключ будет сохранен в следующем каталоге:
|
1 |
/etc/letsencrypt/live/<domain> |
Теперь, когда ваш сертификат сгенерирован, откройте конфигурационный файл Postfix в текстовом редакторе:
|
1 |
sudo nano /etc/postfix/main.cf |
Найдите раздел TLS параметры:

После этого измените значение директив smtpd_tls_cert_file и smtpd_tls_key_file:

Затем сохраните и закройте файл. Чтобы изменения вступили в силу, перезапустите Postfix:
|
1 |
sudo systemctl restart postfix |
Наконец, отправьте тестовое письмо еще раз на целевой адрес электронной почты:
|
1 |
echo "Это тело письма" | mail -s "Тема письма" <email> |
Теперь письмо должно отображаться как обычно, как и другие письма. Если вы проверите техническую информацию письма, оно будет зашифровано.
Заключительные мысли
Поздравляем! Вы успешно настроили почтовый сервер только для отправки на базе Postfix. Передача писем также защищена с помощью соответствующего ключа шифрования.
Другие способы оптимизации передачи электронной почты см. в этом руководстве Лучшие способы использования SMTP-сервера Google.
Приятной работы!
Комментарии
Комментариев пока нет. Будьте первым.