Postfix

В Ubuntu агент передачи почты (Mail Transfer Agent (MTA)) по умолчанию - Postfix. Он считается безопасным, быстрым и легким в администрировании. Он совместим с MTA sendmail. Данный раздел объяснит, как установить и настроить postfix. Так же будет описано, как настроить SMTP сервер с использованием безопасного соединения (для безопасной передачи почты).

Установка

Для устрановки postfix вместе с SMTP-AUTH и Transport Layer Security (TLS) запустите следующую команду:

sudo apt-get install postfix

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

Базовая конфигурация

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

sudo dpkg-reconfigure postfix

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

  • Ok

  • Сайт в интернете

  • NONE

  • mail.example.com

  • mail.example.com, localhost.localdomain, localhost

  • No

  • 127.0.0.0/8

  • Yes

  • 0

  • +

  • все

[Замечание]

Замените mail.example.com именем хостав вашего почтового сервера

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

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

sudo postconf -e 'home_mailbox = Maildir/'
[Замечание]

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

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

Следующим шагом будет настройка postfix для использования SASL для SMTP AUTH.

  1. Настройте Postfix для использования SMTP AUTH с помощью SASL (saslauthd):

    sudo postconf -e 'smtpd_sasl_local_domain ='
    sudo postconf -e 'smtpd_sasl_auth_enable = yes'
    sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
    sudo postconf -e 'broken_sasl_auth_clients = yes'
    sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
    sudo postconf -e 'inet_interfaces = all'
    

    Откройте файл /etc/postfix/sasl/smtpd.conf и добавьте следующие строки в его конец:

    pwcheck_method: saslauthd
    mech_list: plain login
    
  2. После этого, сконфигурируйте цифровой сертификат для TLS. Когда будут заданы вопросы, следуйте инструкциям и отвечайте соответствующим образом.

    openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
    chmod 600 smtpd.key
    openssl req -new -key smtpd.key -out smtpd.csr
    openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
    openssl rsa -in smtpd.key -out smtpd.key.unencrypted
    mv -f smtpd.key.unencrypted smtpd.key
    openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
    sudo mv smtpd.key /etc/ssl/private/
    sudo mv smtpd.crt /etc/ssl/certs/
    sudo mv cakey.pem /etc/ssl/private/
    sudo mv cacert.pem /etc/ssl/certs/
    
    [Замечание]

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

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

    sudo postconf -e 'smtpd_tls_auth_only = no'
    sudo postconf -e 'smtp_use_tls = yes'
    sudo postconf -e 'smtpd_use_tls = yes'
    sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
    sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
    sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
    sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
    sudo postconf -e 'smtpd_tls_loglevel = 1'
    sudo postconf -e 'smtpd_tls_received_header = yes'
    sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
    sudo postconf -e 'tls_random_source = dev:/dev/urandom'
    sudo postconf -e 'myhostname = mail.example.com'
    
  4. Выключить команду chroot для сервера SMTP. Найдите следующую строку в файле /etc/postfix/master.cf:

    smtp inet n - - - - smtpd
    

    и измените на:

    smtp inet n - n - - smtpd
    
[Замечание]

SMTP AUTH для with postfix будет настроена после того, как вы запустите все команды. Собственный сертификат создан для TLS и настроен для использования с postfix.

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

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

          
            sudo /etc/init.d/postfix start
          
        

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

Настройка SASL

The libsasl2-2, sasl2-bin and libsasl2-modules are necessary to enable SMTP AUTH using SASL. You can install these applications if you have not installed them already.

sudo apt-get install libsasl2-2 sasl2-bin

A few changes are necessary to make it work properly. Because Postfix runs chrooted in /var/spool/postfix, SASL needs to be configured to run in the false root (/var/run/saslauthd becomes /var/spool/postfix/var/run/saslauthd):

sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo rm -rf /var/run/saslauthd

Для активации saslauthd отредактируйте файл /etc/default/saslauthd, изменив или добавив в него переменную START. Для настройки запуска saslauthd в "поддельном" root-окружении, добавьте параметры PWDIR, PIDFILE и PARAMS. Напоследок, измените переменную MECHANISMS на подходящую для вашего случая. Файл должен выглядеть примерно вот так:

# This needs to be uncommented before saslauthd will be run
# automatically
START=yes

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="pam"
[Замечание]

Если хотите, вы можете использовать shadow вместо pam. Этот способ будет использовать передачу паролей хешированных с помощью MD5, что является полностью безопасным. Имя пользователя и пароль, необходимые для авторизации, будут такими же, как и у пользователей на системе, которую вы используете под сервер.

Next, update the dpkg "state" of /var/spool/portfix/var/run/saslauthd. The saslauthd init script uses this setting to create the missing directory with the appropriate permissions and ownership:

sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

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

Настройка SMTP AUTH завершена. Теперь самое время для проверочного запуска и тестирования установок. Вы можете запустить демон SASL с помощью следующей команды:

          
            sudo /etc/init.d/saslauthd start
          
        

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

          
            telnet mail.example.com 25
          
        

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

ehlo mail.example.com

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

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

Введите команду quit для завершения сеанса.