Postfix

Postfix является агентом передачи почты (MTA) в Ubuntu по умолчанию. Он разработан чтобы быть быстрым, простым в администрировании и безопасным. Он совместим с MTA sendmail. Этот раздел описывает как установить и настроить postfix. Здесь также разъясняется как сделать его SMTP сервером, использующим безопасные соединения (для безопасной передачи сообщений).

Это руководство не рассматривает настройку виртуальных доменов postfix. Для получения информации по виртуальным доменам и другим расширенным настройкам смотрите Ссылки.

Установка

Для установки postfix выполните следующую команду:

sudo apt-get install postfix

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

Базовая настройка

Для настройки postfix, выполните следующую команду:

sudo dpkg-reconfigure postfix

Будет запущен пользовательский интерфейс. На каждом экране выбирайте следующие значения:

  1. Internet Site

  2. mail.example.com

  3. steve

  4. mail.example.com, localhost.localdomain, localhost

  5. No

  6. 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24

  7. 0

  8. +

  9. all

Замените mail.example.com на домен, для которого вы настраиваете email, 192.168.0.0/24 на актуальную подсеть и маску для вашего почтового сервера и steve на соответствующее имя пользователя.

Теперь самое время решить какой формат почтового ящика вы хотите использовать. По умолчанию postfix использует формат mbox. Вместо непосредственного редактирования файла конфигурации вы можете использовать команду postconf для настройки параметров postfix. Параметры будут сохранены в файле /etc/postfix/main.cf. В дальнейшем если вы решите переконфигурировать отдельные параметры вы можете как запустить команду, так и вручную поправить файл.

Для настройки формата почтового ящика для Maildir:

sudo postconf -e 'home_mailbox = Maildir/'

Это поместит новую почту в /home/username/Maildir, поэтому вам потребуется настроить вашего агента доставки почты (MDA) на использование этого же каталога.

Аутентификация SMTP

SMTP-AUTH позволяет клиенту идентифицировать себя через механизм аутентификации (SASL). Транспортный уровень безопасности (TLS) будет использоваться для шифрования процесса аутентификации. После аутентификации SMTP сервер позволит клиенту передавать почту.

1. Настройте Postfix на SMTP-AUTH с использованием SASL (Dovecot SASL):

sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth-client'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = \
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

Настройка smtpd_sasl_path является путем, относительным к каталогу запросов Postfix.

2. Далее создайте или получите цифровой сертификат для TLS. Смотрите подробности в разделе Сертификаты. Этот пример также использует Центр сертификации (CA). Для информации по созданию сертификатов CA смотрите раздел Центр сертификации.

Почтовым агентам пользователей (MUA), подключающимся к вашему почтовому серверу через TLS, потребуется распознать сертификат, используемый для TLS. Это может быть сделано либо с использованием сертификата от коммерческого центра сертификации, либо с самоподписанным сертификатом, который пользователи вручную установили. Для TLS между MTA (почтовыми агентами передачи) сертификаты никогда не подтверждаются без дополнительного соглашения с контролирующими организациями. Поэтому для таких соединений, если локальные политики этого не требуют, нет резона не использовать самоподписанные сертификаты. Смотрите подробности в разделе Создание самоподписанного сертификата.

3. Как только у вас появился сертификат, настройте Postfix на использование TLS шифрования как для входящей, так и для исходящей почты:

sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'myhostname = mail.example.com'

4. Если вы используете собственный Центр сертификации, для подписи сертификата введите:

sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'

Опять же, для подробностей смотрите раздел Сертификаты.

После выполнения всех команд Postfix настроен на SMTP-AUTH и самоподписанный сертификат создан для TLS шифрования.

Начальная настройка postfix закончена. Выполните следующую команду для перезапуска сервиса postfix:

sudo /etc/init.d/postfix restart

Postfix поддерживает SMTP-AUTH как описано в RFC2554. Он основан на SASL. Однако все-таки необходимо настроить аутентификацию перед тем, как вы сможете использовать SMTP-AUTH.

Настройка SASL

Postfix поддерживает две реализации SASL: Cyrus SASL и Dovecot SASL. Чтобы разрешить Dovecot SASL, требуется установить пакет dovecot-common. Для этого из терминала введите следующее:

sudo apt-get install dovecot-common

Далее вам потребуется отредактировать /etc/dovecot/dovecot.conf. В секции auth default снимите комментарий с опции socket listen и измените ее следующим образом:

  socket listen {
    #master {
      # Master socket provides access to userdb information. It's typically
      # used to give Dovecot's local delivery agent access to userdb so it
      # can find mailbox locations.
      #path = /var/run/dovecot/auth-master
      #mode = 0600
      # Default user/group is the one who started dovecot-auth (root)
      #user = 
      #group = 
    #}
    client {
      # The client socket is generally safe to export to everyone. Typical use
      # is to export it to your SMTP server so it can do SMTP AUTH lookups
      # using it.
      path = /var/spool/postfix/private/auth-client
      mode = 0660
      user = postfix
      group = postfix
    }
  }

Чтобы позволить использовать SMTP-AUTH клиентам Outlook, в секции auth default файла /etc/dovecot/dovecot.conf добавьте "login":

  mechanisms = plain login

После того, как Dovecot настроен, перезапустите его:

sudo /etc/init.d/dovecot restart

Почтовый стек доставки

Другой опцией настройки Postfix для SMTP-AUTH является использование пакета mail-stack-delivery (ранее он назывался dovecot-postfix). Этот пакет установит Dovecot и настроит Postfix для его использования совместно с SASL аутентификацией и как агента доставки почты (MDA). Пакет также настроит Dovecot для IMAP, IMAPS, POP3 и POP3S.

Вы можете захотеть или не захотеть использовать IMAP, IMAPS, POP3, или POP3S на вашем почтовом сервере. Например, если вы настраиваете свой сервер в качестве почтового шлюза, фильтра спама и вирусов и т.п. В этом случае возможно будет проще использовать вышеприведенные команды для настройки Postfix на SMTP_AUTH.

Чтобы установить пакет, введите в терминале:

sudo apt-get install mail-stack-delivery

У вас теперь рабочий почтовый сервер, но существует несколько опций, которые вы, возможно, захотите изменить в дальнейшем. Например, пакет использует сертификат и ключ от ssl-cert пакета, и в рабочей среде, вы должны использовать сертификат и ключ, сгенерированный для хоста. Смотрите радел Сертификаты для дополнительных деталей.

После того, как вы получили заказанный сертификат для сервера, замените следующую опцию в /etc/postfix/main.cf:

smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key

Перезапустите Postfix:

sudo /etc/init.d/postfix restart

Тестирование

Настройка SMTP-AUTH завершена. Теперь самое время проверить настройки.

Чтобы убедиться, что SMTP-AUTH и TLS работают правильно, выполните следующую команду:

telnet mail.example.com 25

После установления соединения с почтовым сервером postfix введите:

ehlo mail.example.com

Если среди прочего вы увидите следующие строки, все работает замечательно. Введите quit для выхода.

250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME

Решение проблем

Эта секция описывает несколько общих способов определения причин возникающих проблем.

Отказ от режима chroot

Пакет postfix в Ubuntu по умолчанию устанавливается в окружении chroot из соображений безопасности. Это может дополнительно усложнить процесс поиска решения проблем.

Для отключения функционирования chroot, найдите следующую строку в файле настроек /etc/postfix/master.cf:

smtp      inet  n       -       -       -       -       smtpd

И замените на следующее:

smtp      inet  n       -       n       -       -       smtpd

После этого вам придется перезапустить Postfix для использования новых настроек. Из терминал введите следующее:

sudo /etc/init.d/postfix restart

Файлы журналов

Postfix посылает все сообщения в журнал /var/log/mail.log. Однако сообщения об ошибках и предупреждения могут иногда теряться в нормальном журнале, поэтому они отдельно сохраняются в /var/log/mail.err и /var/log/mail.warn соответственно.

Для просмотра сообщений журнала в режиме реального времени вы можете использовать команду tail -f:

tail -f /var/log/mail.err

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

1. Для увеличения TLS активности журнала, установите опции smtpd_tls_loglevel значение от 1 до 4.

sudo postconf -e 'smtpd_tls_loglevel = 4'

2. Если вы испытываете трудности с отправкой или приемом почты отдельного домена, вы можете включить его в параметр debug_peer_list.

sudo postconf -e 'debug_peer_list = problem.domain'

3. Вы можете увеличить детализацию любого сервиса Postfix редактированием /etc/postfix/master.cf, добавив -v после соответствующей записи. Для примера изменим запись smtp:

smtp      unix  -       -       -       -       -       smtp -v

Важно помнить, что после внесения изменений настроек журналирования процессов, Postfix требуется перезапустить для восприятия новой конфигурации:
sudo /etc/init.d/postfix reload

4. Для увеличения количества информации в журнале при поиске проблем с SASL, вы можете установить следующие опции в /etc/dovecot/dovecot.conf:

auth_debug=yes
auth_debug_passwords=yes

Как и в случае с Postfix, если вы изменяете настройки Dovecot, процесс требуется перезапустить:
sudo /etc/init.d/dovecot reload

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

Ссылки

Администрирование сервера Postfix может быть очень сложной задачей. В какой-то момент вам может потребоваться обратиться к сообществу Ubuntu для более квалифицированной помощи.

Хорошее место задать вопрос по сопровождению Postfix и влиться в сообщество Ubuntu Server, это IRC канал #ubuntu-server на freenode. Вы также можете отправить сообщение на один из интернет форумов.

Для погружения в информацию по Postfix очень рекомендуется прочитать The Book of Postfix.

Наконец сайт Postfix также содержит много информации по всем возможным опциям настройки.

Кроме того страница Ubuntu Wiki Postfix содержит дополнительную информацию.