Устанавливаем и настраиваем postfix
Устанавливаем и настраиваем dovecot
Создаём почтовый ящик
В прошлой статье мы рассказали о том, как подготовить базу для нашего почтового сервера, теперь настало время установить и настроить сам почтовик.
На этом этапе мы рассмотрим настройку почтового сервера с виртуальными пользователями и хранением паролей от почтовых ящиков в файле. Этот метод несложен и не требует много действий в консоли, но если вы планируете заводить больше 10–15 почтовых ящиков, управлять ими будет не очень удобно — для этого лучше подойдёт второй вариант настройки с хранением паролей в базе данных.
Устанавливаем и настраиваем postfix
Устанавливаем postfix на сервер:
Centos (обычно в Centos 7 он уже установлен):
yum install epel-release -y yum install postfix -y
Debian/Ubuntu:
apt install postfix -y
Далее откроется окно, где нужно выбрать Internet Site:
Запускаем и добавляем в автозагрузку службу postfix:
systemctl start postfix systemctl enable postfix
Вносим изменения в настройку postfix, в консоли вводим следующие команды:
postconf -e 'inet_interfaces=all' postconf -e 'mydestination=' postconf -e 'myhostname=mailtest.fvds.ru' postconf -e 'virtual_mailbox_domains=mailtest.fvds.ru' postconf -e 'virtual_transport=lmtp:unix:private/dovecot-lmtp' postconf -e 'virtual_mailbox_maps=hash:/etc/postfix/virtual_recipients' postconf -e 'virtual_alias_maps=hash:/etc/postfix/virtual_alias_recipients' postconf -e 'virtual_mailbox_base=/var/mail/vmail/' postconf -e 'local_recipient_maps=$virtual_mailbox_maps' postconf -e 'smtpd_sasl_auth_enable=yes' postconf -e 'smtpd_sasl_type=dovecot' postconf -e 'smtpd_sasl_path=private/auth' postconf -e 'broken_sasl_auth_clients=yes' postconf -e 'smtpd_sasl_security_options=noanonymous' postconf -e 'smtpd_use_tls=yes' postconf -e 'smtpd_tls_cert_file=/etc/postfix/certs/cert.pem' postconf -e 'smtpd_tls_key_file=/etc/postfix/certs/key.pem' postconf -e 'smtpd_sasl_tls_security_options=noanonymous' postconf -e 'smtpd_tls_auth_only=yes' postconf -e 'smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination' postconf -e 'smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_helo_hostname,reject_non_fqdn_sender,reject_unknown_sender_domain,reject_non_fqdn_recipient,reject_unknown_recipient_domain' postconf -e 'smtpd_banner=$myhostname ESMTP' postconf -e 'biff=no' postconf -e 'strict_rfc821_envelopes=yes' postconf -e 'disable_vrfy_command=yes' postconf -e 'smtpd_helo_required=yes'
Конфигурация будет добавлена в файл /etc/postfix/main.cf
.
В конец файла /etc/postfix/master.cf
дописываем следующие строки:
submission inet n - n - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o syslog_name=postfix/submission -o smtpd_tls_wrappermode=no -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination -o milter_macro_daemon_name=ORIGINATING smtps inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination -o milter_macro_daemon_name=ORIGINATING
Для Centos в конец этого же файла нужно добавить:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
Для Debian/Ubuntu в конец этого же файла нужно добавить:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
Теперь сгенерируем самоподписанный сертификат, чтобы данные не передавались в открытом виде. При генерации сертификата система задаст несколько вопросов. На них можно ответить всё, что угодно, — особой роли это не играет.
mkdir /etc/postfix/certs openssl req -new -x509 -days 3650 -nodes -out /etc/postfix/certs/cert.pem -keyout /etc/postfix/certs/key.pem
Вот пример выполнения команды:
Если у вас есть платный сертификат на домен с не истекшим сроком действия, используйте его. Файлы сертификата нужно разместить в директории /etc/postfix/certs/
и заменить имена файлов на свои в конфигурационном файле postfix /etc/postfix/main.cf
в следующих строках:
smtpd_tls_cert_file smtpd_tls_key_file
Проверить корректность настроек postfix можно через команду:
postfix check
Устанавливаем и настраиваем dovecot
Centos:
yum install dovecot -y
Debian/Ubuntu:
apt install dovecot-imapd dovecot-pop3d dovecot-lmtpd -y
Активируем службу и добавляем в автозапуск:
systemctl start dovecot systemctl enable dovecot
Создаём локальный файл настроек:
touch /etc/dovecot/local.conf
Открываем его текстовым редактором и указываем в нём следующие настройки:
protocols = pop3 imap lmtp auth_mechanisms = plain login mail_gid = vmail mail_uid = vmail first_valid_uid = 5000 last_valid_uid = 5000 mail_location = maildir:/var/mail/vmail/%d/%n/ mbox_write_locks = fcntl disable_plaintext_auth = yes passdb { args = scheme=ssha512 username_format=%u /etc/dovecot/users driver = passwd-file } userdb { args = username_format=%u /etc/dovecot/users driver = passwd-file } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-userdb { mode = 0600 user = vmail } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } user = vmail } protocol lmtp { postmaster_address = postmaster@mailtest.fvds.ru } ssl = required ssl_cert = </etc/postfix/certs/cert.pem ssl_key = </etc/postfix/certs/key.pem ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA ssl_dh_parameters_length = 2048 ssl_prefer_server_ciphers = yes
Файл пользователей почтовых ящиков находится здесь — /etc/dovecot/users
, формат файла аналогичен формату пользователей системы — /etc/passwd
.
Сертификат используется тот, что генерировали при настройке postfix, если используете свой сертификат, то нужно указать путь до него в следующих строках конфигурационного файла dovecot /etc/dovecot/local.conf
:
ssl_cert ssl_key
Создаём почтовый ящик
Основа почтового сервера готова, теперь можно создать первый почтовый ящик. Ящики и пароли от них хранятся в файле /etc/dovecot/users
. Генерируем пароль для почтового ящика командой:
doveadm pw -s ssha512
Команда запросит пароль и подтверждение, придумываем его и вводим. На выходе увидим следующую строку:
Обязательно скопируйте её, это пароль от ящика в зашифрованном виде.
Далее открываем файл с пользователями /etc/dovecot/users
— если его нет, то создайте его с помощью команды touch /etc/dovecot/users
— и вносим туда имя почтового ящика, наш сгенерированный пароль и номера uid (5000) и gid (5000) через двоеточие в следующем формате:
admin@mailtest.fvds.ru:{SSHA512}v8cRBy17QPdVE91MRQ1MsuMtCUENXZuWGuX5o51we/V1YG3MgJnC+9qHRw488U4W5ZR6eAlxuQiKco41U5swvXVMDRg=:5000:5000
Теперь создадим файл получателей локальной почты:
touch /etc/postfix/virtual_recipients
И файл псевдонимов для почтовых ящиков, чтобы настроить переадресацию на тот почтовый ящик, с которого вам удобнее получать письма:
touch /etc/postfix/virtual_alias_recipients
В нашем примере формат файла псевдонимов следующий:
admin@mailtest.fvds.ru admin.mailtest@ya.ru
Письма, отправленные на admin@mailtest.fvds.ru, будут перенаправляться на admin.mailtest@ya.ru. Почтовые ящики можно использовать любые, здесь для примера используется admin@mailtest.fvds.ru. Вы указываете тот почтовый ящик, который у вас создан на сервере и с которого нужно настроить переадресацию, и тот, на который хотите получать письма.
Далее в файле /etc/postfix/virtual_recipients
укажем созданный почтовый ящик в таком виде:
admin@mailtest.fvds.ru admin/
Проиндексируем базу пользователей postfix:
postmap /etc/postfix/virtual_recipients postmap /etc/postfix/virtual_alias_recipients
Примечание:
После каждого изменения файлов
/etc/postfix/virtual_recipients
и/etc/postfix /virtual_alias_recipients
выполняйте их переиндексацию, чтобы данные обновились:postmap /etc/postfix/virtual_recipients postmap /etc/postfix/virtual_alias_recipients
Перезапускаем почтовые службы:
systemctl restart dovecot systemctl restart postfix
На этом базовая настройка почтового сервера завершена: можно отправлять и получать письма. Если не планируете переписываться с огромным количеством людей, у которых в почте настроены жёсткие проверки на спам, то можете на этом остановиться — протестировать отправку и пользоваться. Но, помните, что для полноценной работы почтового сервера только базовой настройки недостаточно. Такие сервисы, как gmail.com, mail.ru или yandex.ru, могут расценивать ваши письма, как спам, из-за того, что они не прошли проверку, и отклонять их. Чтобы этого не случилось и письма доходили до адресата, советуем выполнить ещё пару настроек, о которых расскажем далее.