Postfix – это бесплатное программное обеспечение почтового сервера, разработанное для использования в операционных системах семейства Unix. Оно относится к классу агентов пересылки сообщений (message transport agent, MTA), которые осуществляют передачу электронных писем между почтовыми клиентами пользователей. Для организации серверов подобной почты крайне популярна связка Ubuntu Linux + Postfix. Настройка их будет рассмотрена в приведенной ниже статье.
Подготовка к инсталляции Postfix
Перед началом установки Postfix требуется выполнить несколько процедур по корректной настройке ресурса. Предполагается, что на сервере уже установлена и готова к работе операционная система Ubuntu Linux.
Устанавливаем корректное имя хоста
По умолчанию, Postfix использует имя хоста почтового сервера для того, чтобы идентифицировать себя при коммуникации с другими агентами пересылки сообщений. Имя хоста может быть двух видов: простое слово или полностью определенное имя домена (Fully Qualified Domain Name, FQDN). Когда что применяется?
Имя хоста в виде простого слова обычно используется для персональных компьютеров. Если вы используете Linux на домашнем ПК, то вы можете назвать его, к примеру, linux, debian, ubuntu. FQDN состоит из двух частей: имя узла и имя домена. Например, mail.yourdomain.co.
Здесь mail – имя узла, yourdomain.com – доменное имя. FQDN, как правило, используется для интернет-серверов, и именно его следует использовать при настройке Postfix для отправки почты. Приведенная выше форма FQDN является стандартной для email-серверов.
Для того чтобы узнать FQDN вашего сервера, введите в терминале Ubuntu следующую команду: hostname –f.
Если у сервера еще нет FQDN, его можно задать при помощи утилиты hostnamectl. sudohostnamectlset-hostnameyour-fqdn.
После этого выйдите из учетной записи в системе и войдите обратно. Вы сможете увидеть изменения при помощи команды hostname –f.
Проверяем системное время
Проходя через Postfix, почта получает отметку о времени пересылки. Для этого сервер проверяет свое системное время. Эта отметка также записывается в его лог Postfix (/var/log/mail.log). Поэтому перед тем как устанавливать Postfix, настройку системного времени необходимо произвести корректно.
Используйте команду date, чтобы узнать временную зону и текущее системное время на сервере Ubuntu: user@mail:~$ date. Sun Dec 31 06:37:19 BST 2017.
Задаем записи DNS для почтового сервера
- Запись MX. MX-запись (от английского “mail exchanger”) сообщает другим агентам пересылки сообщений, что ваш сервер mail.yourdomain.com отвечает за отправку почты в вашем домене. Запись MX @ mail.yourdomain.com.
- Запись A. А-запись устанавливает связь между FQDN и IP-адресом: mail.yourdomain.com <IP-адрес>.
- Запись PTR. PTR-запись (от английского “pointer record”) устанавливает обратную связь между IP-адресом и FQDN. Она является противоположностью записи A и используется для обратных запросов DNS. <IP-адрес> mail.yourdomain.com
Все 3 записи задаются на стороне вашего хостинг-провайдера. Как правило, поставщик услуг задает их автоматически, но при необходимости их можно указать вручную, используя интерфейс управления вашим хостингом.
Обратная связь между записью A и записью PTR используется при блокировке спама. Многие агенты передачи сообщений принимают почту, только если сервер действительно связан с определенным доменом. Задать запись PTR необходимо, чтобы письма с вашего сервера не попадали у отправителей в папку со спамом.
Для того чтобы узнать запись PTR для определенного IP-адреса, выполните в консоли следующую команду: dig -x <IP> +shortили host <IP>.
После того как подготовка завершена, начнем инсталляцию Postfix.
Установка Postfix и настройка
Чтобы скачать Postfix, выполните следующие две команды в терминале на вашем сервере Ubuntu:
- sudo apt-get update;
- sudo apt-get install postfix -y.
Для вновь установленного Postfix настройка начинается с выбора типа почтовой конфигурации:
- No configuration – в процессе установки не будут настраиваться какие-либо параметры.
- Internet Site – Postfix будет настроен для отправки электронной почты другим почтовым серверам и приема сообщений от них.
- Internet with smarthost – сервер Postfix будет использоваться для получения электронных сообщений от других почтовых серверов, но отправка писем будет осуществляться через сервер-ретранслятор.
- Satellite system – ретранслятор будет использоваться и для получения, и для отсылки почты.
- Local only – электронная почта будет пересылаться только внутри локальной учетной записи.
Далее введите ваше доменное имя в качестве имени почтовой системы, то есть того, что идет в почтовом адресе после символа @. Например, если ваш адрес электронной почты – info@yourdomain.com, то в качестве имени почтовой системы следует ввести yourdomain.com.
Настройка Postfix в Ubuntu завершена.
После установки сервер Postfix будет автоматически запущен, и в каталоге /etc будет сгенерирован конфигурационный файл /etc/postfix/main.cf. Теперь мы можем проверить версию Postfix следующей командой:
user@mail:~$ sudo postconf mail_version
mail_version = 2.11.0
Мы также можем выяснить при помощи утилиты netstat, что основной процесс Postfix «слушает» TCP-порт 25: sudo netstat –lnpt.
Перед тем как отправлять первое тестовое письмо, не лишним будет проверить, блокируется ли порт 25 сетевым экраном. Для сканирования открытых портов можно использовать утилиту nmap. Выполните следующую команду в терминале на каком-нибудь другом компьютере под Linux (например, на вашем ПК), подставив в нее реальный IP вашего почтового сервера: sudo nmap <IP вашего сервера>.
Как правило, порт 25 открыт, так как это стандартный порт для электронной почты. Если он закрыт, следует внести изменения в настройки сетевого экрана iptables на сервере. При этом нужно разрешить входящие и исходящие соединения на этот порт. Если он блокируется вашим хостинг-провайдером, свяжитесь с представителем и попросите открыть его.
Отправка тестового письма
Собственно говоря, теперь мы можем отправлять и получать письма в консоли Ubuntu. Если ваш пользовательский аккаунт на сервере называется user, вашим почтовым адресом будет user@yourdomain.com. В качестве теста вы можете отправить письмо администратору ресурса (пользователь root) или на любой почтовый адрес Gmail, "Яндекс" и так далее.
При установке Postfix в каталог /usr/sbin/sendmail записывается бинарный файл агента пересылки сообщений sendmail. Мы можем использовать его для того, чтобы отправить пробное письмо на почтовый адрес Gmail, например: echo«тест» | sendmailyouraccount@gmail.com
Эта несложная команда сообщает sendmail, что нужно считать сообщение из стандартного ввода и создать тело электронного письма с текстом «тест», а потом отправить его на указанный почтовый адрес Gmail. Письмо с данным текстом должно прийти на ваш почтовый ящик Google. Обратите внимание, что адрес отправителя указывать не нужно: его автоматически вставит в метаданные письма Postfix, при настройке которого мы задали имя почтовой системы.
Теперь попробуем ответить на это сообщение, чтобы проверить, как Postfix принимает сообщения. Входящие письма, приходящие на ваш почтовый сервер, хранятся в каталоге /var/spool/mail/<username> и /var/mail/<username>. Также расположение входящих писем можно узнать командой: postconf ail_spool_directory.
Журнал сообщений Postfix находится в файле /var/log/mail.log.
Установка и настройка спам-фильтра
В Postfix для настройки спам-фильтра выполните установку spamassassin и spamc: apt-get install spamassassin spamc
SpamAssassin – это спам-фильтр, который будет отсеивать нежелательную почту на вашем сервере в соответствии с заданными настройками. Рассмотрим их.
Основным конфигурационным файлом спам-фильтра является /etc/mail/spamassassin/local.cf, который можно открыть при помощи любого удобного вам текстового редактора. В частности, значимыми для фильтрации считаются следующие настройки, которые нужно при необходимости добавить или раскомментировать:
report_safe 0
required_score 8.0
rewrite_header Subject [SPAM]
- Параметр report_safe рекомендуется установить равным 0. В этом случае входящий спам будет получать в заголовке отметку, заданную параметром rewrite_header. Если задать значение параметра равным 1, то сообщения будут удаляться.
- Параметр required_score отвечает за чувствительность спам-фильтра. Чем меньше его значение, тем строже фильтруется почта. Для крупных почтовых серверов, обслуживающих более сотни аккаунтов, значение required_score рекомендуется устанавливать в промежутке между 8.0 и 10.0.
Сохраните конфигурационный файл, а затем включите и запустите спам-фильтр и обновите его конфигурацию:
# systemctl enable spamassassin
# systemctl start spamassassin
# sa-update
Интеграция Postfix и SpamAssassin
Для того чтобы эффективно интегрировать Postfix со спам-фильтром, необходимо создать отдельного пользователя и группу для процесса спам-фильтра:
# useradd spamd -s /bin/false -d /var/log/spamassassin
Далее добавим следующую строку в конец конфигурационного файла /etc/postfix/master.cf:
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
После этого в начале файла укажем, что spamassassin будет работать в качестве фильтра контента (параметр content_filter):
-o content_filter=spamassassin
Наконец, перезапустите Postfix, чтобы применить изменения:
# systemctl restart postfix
Настройка спам-фильтра завершена.
Для того чтобы проверить работоспособность SpamAssassin, можно выполнить следующий тест. Отправьте электронное письмо с другого почтового сервера (к примеру, Gmail или Яндекс) на адрес электронной почты на вашем сервере. Задайте ему любой заголовок, а в теле сообщения введите:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
При отправке вышеприведенного текста на ваш сервер, к примеру, с аккаунта Gmail, будет получен следующий ответ:
Verify SpamAssassin Detecting Spam Mails
Еще одно сообщение будет записано в лог, который можно просмотреть при помощи следующей команды:
# journalctl | grep spam
Сообщение лога содержит текст: Monitor SpamAssassin Mail Logs
Дополнительно, вы можете проверить spamassassin прямо из консоли: # spamassassin -D < /usr/share/doc/spamassassin-3.4.0/sample-spam.txt
Вышеприведенная команда выдает достаточно подробный результат, который должен включать в себя нижеприведенную строку: TestSpamAssassinSpamfromCommandline.
Заключение
Настроив свой собственный частный сервер электронной почты, вы сможете собственноручно обеспечивать приватность своей электронной переписки, потому что только вы – администратор сервера - будете иметь доступ к хранящимся на сервере письмам. С другой стороны, создание личного почтового сервера требует достаточно много усилий.
Выполнив приведенные в статье рекомендации, вы сможете установить и корректно настроить почтовый сервер на базе Ubuntu Linux и Postfix для приема и передачи сообщений, а также для фильтрации спама. Инструкции действительны для версий Ubuntu, начиная с 12.04.