Loading...

Установка Dovecot в Centos7

Займемся настройкой dovecot — сервер доставки почты пользователю по протоколам pop3 и imap. Я не вижу причин использовать pop3.

 Статьи   Время чтения: 6 минуты   Просмотров: 474

Установка Dovecot в Centos7

Он неудобен по сравнению с imap. Чаще всего pop3 отключаю вовсе. Но это уже на ваше усмотрение. Приведу пример с настройкой обоих протоколов. Помимо основного функционала по доставке почты, я настрою несколько полезных плагинов.

Настраиваем Dovecot

Конфигурация Dovecot состоит из нескольких файлов, каждый из которых предстоит немного подправить.

Как установить Postfix3 в Centos7 я рассказывал в статье "Настройка Postfix3 в Centos7"

Правим /etc/dovecot/dovecot.conf:

protocols = imap lmtp

Затем /etc/dovecot/conf.d/10-mail.conf:

mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail

В /etc/dovecot/conf.d/10-auth.conf меняем следующее:

auth_mechanisms = plain login
# эту строчку нужно закомментировать:
#!include auth-system.conf.ext
!include auth-sql.conf.ext

Далее правим /etc/dovecot/conf.d/auth-sql.conf.ext:

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}

Редактируем /etc/dovecot/dovecot-sql.conf.ext:

driver = mysql
connect = host=127.0.0.1 user=mail password=ПАРОЛЬ_ОТ_БД dbname=mail
default_pass_scheme = SHA512-CRYPT
password_query = \\
    SELECT email as user, password \\
    FROM virtual_users \\
    WHERE email=\'%u\';

Правим в /etc/dovecot/conf.d/10-master.conf следующее:

# ...

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}

# ...

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }

  user = dovecot
}

# ...

service auth-worker {
  user = vmail
}

Наконец, в файле /etc/dovecot/conf.d/15-lda.conf указываем:

postmaster_address = postmaster@blanet.ru

Фух, с конфигами покончено. Теперь для каждого домена говорим:

sudo mkdir -p /var/mail/vhosts/blanet.ru

Создаем пользователя и группу vmail, проставляем права и перезапускаем Dovecot:

sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d /var/mail
sudo chown -R vmail:vmail /var/mail
sudo chown -R vmail:dovecot /etc/dovecot
sudo chmod -R o-rwx /etc/dovecot
sudo service dovecot restart

Dovecot настроен!

Проверяем

К этому моменту у вас должен крутиться SMTP на порту 25 и IMAP на порту 143. Пока что без TLS и спам-фильтра, но это уже самый настоящий почтовый сервер. Проверяем, что к нему можно подключиться почтовым клиентом. Затем добавляем в DNS MX-запись, указывающую на mail.blanet.ru. Обновление зоны занимает какое-то время — обычно около часа, но особо «умные» провайдеры могут кэшировать данные на сутки. То, что зона обновилась, можно увидеть так:

dig blanet.ru MX

...

;; ANSWER SECTION:
blanet.ru.         3599    IN  MX  5 mail.blanet.ru.

...

После этого проверяем, что почта приходит с какого-нибудь GMail и уходит на него (возможно, попадая при этом в каталог «Спам»), также проверяем работу алиасов. В случае возникновения проблем смотрим в файл /var/log/mail.log — туда пишет логи как Postfix, так и Dovecot.

Дополнение: С недавних пор некоторые почтовые сервисы начали отклонять письма, если у почтового сервера нет reverse DNS и SPF записей. Добавление reverse DNS происходит по-разному у разных VDS-провайдеров. У DigitalOcean нужно назвать VDS доменным именем сервера (например, «mail.blanet.ru»). Проверить, что все в порядке, можно командой dig -x 1.2.3.4. SPF запись включается простым добавлением TXT-записи с содержимым v=spf1 mx -all. Она говорит, что слать письма с blanet.ru могут только сервера, указанные в MX-записях домена. Для проверки выполняем команду dig -t TXT blanet.ru.

Прикручиваем TLS

Поскольку мы не дураки платить за сертификаты, то воспользуемся Let’s Encrypt. Прежде останавливаем httpd. После получения сертификата запускаем httpd. После установки certbot’а говорим:

sudo certbot --standalone certonly -d mail.blanet.ru

Теперь актуальный ключ и сертификат всегда будут лежать в:

/etc/letsencrypt/live/mail.blanet.ru/fullchain.pem
/etc/letsencrypt/live/mail.blanet.ru/privkey.pem

Правим /etc/postfix/main.cf:

smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.blanet.ru/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.blanet.ru/privkey.pem
# Эта настройка говорит по возможности слать исходящую почту по TLS
# Без нее GMail будет помечать письма как "незашифрованные"
smtp_tls_security_level=may

Затем редактируем /etc/dovecot/conf.d/10-ssl.conf

ssl = required
# символы < перед путями к файлам - не опечатка
ssl_cert = < /etc/letsencrypt/live/mail.blanet.ru/fullchain.pem
ssl_key = < /etc/letsencrypt/live/mail.blanet.ru/privkey.pem

Перезапускаем Postfix и Dovecot:

sudo service postfix restart
sudo service dovecot restart

Postfix слушает с TLS на порту 25. Dovecot слушает одновременно порты 143 и 993. Меняем настройки почтового клиента и проверяем, что все работает. Мне в случае с Claws Mail в свойствах SMTP пришлось выбрать галочку «Use STARTTLS command to start encryption session».

Но это еще не все! Нужно, чтобы Postfix и Dovecot автоматически перечитывали сертификаты при их обновлении.

В /etc/letsencrypt/cli.ini пишем:

renew-hook=/etc/letsencrypt/certbot-renew-hook.sh

Создаем /etc/letsencrypt/certbot-renew-hook.sh:

#!/bin/sh

set -e

systemctl reload postfix
systemctl reload dovecot

Наконец, говорим:

sudo chmod ug+x /etc/letsencrypt/certbot-renew-hook.sh

Скрипт будет автоматически вызываться при каждом успешном обновлении сертификата и перезапускать демонов.

Как установить Postfix3 в Centos7 я рассказывал в статье "Настройка Postfix3 в Centos7"



Автор: Google

Последние страницы

©2009-2024 Blanet.Ru. Все права защищены.