Postfix On Ubuntu

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

# apt-get install postfix

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

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

# dpkg-reconfigure postfix

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

  1. Сайт в интернете
  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. все

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

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

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

# postconf -e 'home_mailbox = Maildir/'

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

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

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

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

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

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

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

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

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

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

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

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

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

Теперь файл /etc/postfix/main.cf должен выглядеть примерно так:

# See /usr/share/postfix/main.cf.dist for a commented, more complete
# version

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject _unauth_destination
smtpd_tls_auth_only = no
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

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

# service postfix restart

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

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

# apt-get install dovecot-common

Теперь нужно отредактировать /etc/dovecot/conf.d/10-master.conf. Измените следующее:

service auth {

 # auth_socket_path points to this userdb socket by default. It's typically
 # used by dovecot-lda, doveadm, possibly imap process, etc. Its default
 # permissions make it readable only by root, but you may need to relax these
 # permissions. Users that have access to this socket are able to get a list
 # of all usernames and get results of everyone's userdb lookups.
 unix_listener auth-userdb {
   #mode = 0600
   #user = 
   #group = 
 }
 # Postfix smtp-auth
 unix_listener /var/spool/postfix/private/auth {
   mode = 0660
   user = postfix
   group = postfix
 }

Чтобы позволить клиентам Outlook использовать SMTP-AUTH, в секции authentication mechanisms файла /etc/dovecot/conf.d/10-auth.conf замените эту строку:

auth_mechanisms = plain

На следующую:

auth_mechanisms = plain login

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

sudo service 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 service 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 service postfix restart

Smtps

Если вам нужен smtps, отредактируйте /etc/postfix/master.cf и раскомментируйте следующую строку:

smtps inet n – – – – smtpd

 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o milter_macro_daemon_name=ORIGINATING

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

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

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

tail -f /var/log/mail.err

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

   Для увеличения TLS активности журнала, установите опции smtpd_tls_loglevel значение от 1 до 4.
   sudo postconf -e 'smtpd_tls_loglevel = 4'
   Если вы испытываете трудности с отправкой или приёмом почты из отдельного домена, вы можете включить его в параметр debug_peer_list.
   sudo postconf -e 'debug_peer_list = problem.domain'
   Вы можете увеличить детализацию любого сервиса Postfix редактированием /etc/postfix/master.cf, добавив -v после соответствующей записи. Для примера изменим запись smtp:
   smtp      unix  -       -       -       -       -       smtp -v

Важно отметить, что после одного из регистрации изменений выше процесс Postfix должен быть перезагружен для того, чтобы признать новую конфигурацию: sudo service postfix reload

   Чтобы увеличить количество информации, записываемой в журнал при устранении проблем с SASL, вы можете задать следующие опции в /etc/dovecot/conf.d/10-logging.conf
   auth_debug=yes
   auth_debug_passwords=yes

Так же, как и в случае с Postfix, если вы изменили конфигурацию Dovecot, то процесс должен быть перезагружен: sudo service dovecot reload.

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