Как настроить Postfix и Dovecot для пользователей виртуального домена в Linux. Часть 2
В предыдущей статье этой серии мы объяснили, как безопасно настроить базу данных почтового сервера и управлять ею с помощью phpMyAdmin.
Требование:
- Установите почтовый сервер Postfix и Dovecot с помощью MariaDB – часть 1
Теперь пришло время настроить внутренние программы, которые сделают отправку и получение электронной почты реальностью: Postfix и Dovecot (для обработки исходящей и входящей электронной почты соответственно).
Настройка почтового сервера Postfix
Прежде чем приступить к настройке Postfix, было бы полезно просмотреть его справочные страницы здесь, уделив особое внимание разделу под названием «Информация для новых пользователей Postfix». . Если вы это сделаете, вам будет легче следовать этому руководству.
Короче говоря, вы должны знать, что для Postfix существует два файла конфигурации:
- /etc/postfix/main.cf (параметры конфигурации Postfix, более подробную информацию см. в man 5 postconf).
- /etc/postfix/master.cf (конфигурация главного демона Postfix, дополнительную информацию см. в разделе man 5 master).
В /etc/postfix/main.cf
найдите (или добавьте, если необходимо) следующие строки и убедитесь, что они соответствуют значениям, указанным ниже:
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
message_size_limit = 4194304
readme_directory = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
Следующие три настройки имеют особое значение. В файлах, обозначенных желтым цветом, мы настроим доступ Postfix к таблицам Domains_tbl, Users_tbl и Alias_tbl:
virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf
Обратите внимание, что вы можете выбрать разные имена файлов, указанные выше, при условии, что вы их создали и вставили в них следующее содержимое. В каждом случае замените YourPassword паролем, который вы выбрали для пользователя dba в Части 1, или вы также можете использовать MariaDB. учетные данные root для пользователя и пароль ниже.
Кроме того, убедитесь, что вы используете те же имена базы данных сервера электронной почты и таблиц, созданных в Части 1.
В /etc/postfix/mariadb-vdomains.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'
В /etc/postfix/mariadb-vusers.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'
В /etc/postfix/mariadb-valias.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'
Наконец, не забудьте изменить права доступа к этим файлам на 640:
chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf
И право собственности на пользователя root и группу postfix:
chown root:postfix /etc/postfix/mariadb-vdomains.cf
chown root:postfix /etc/postfix/mariadb-vusers.cf
chown root:postfix /etc/postfix/mariadb-valias.cf
Далее, чтобы включить безопасные соединения, нам необходимо убедиться, что следующие настройки раскомментированы (или добавлены, если необходимо) в /etc/postfix/master.cf
:
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
#virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
Примечание. Отступ в строках, начинающихся с параметра -o
, имеет решающее значение; в противном случае проверка постфикса вернет ошибку:
Прежде чем сохранить изменения, добавьте следующие строки внизу файла:
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
На этом этапе важно проверить, имеет ли Postfix доступ к таблицам базы данных, а также доменам, учетным записям и псевдонимам, которые мы создали в Части 1.
Для этого мы воспользуемся командой postmap — утилитой для проверки связи с таблицами, которые Postfix будет искать во время работы, но прежде всего нам нужно перезапустить postfix:
systemctl postfix restart
postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-valias.cf
На изображении ниже мы видим, что для существующих записей в базе данных возвращается 1. В противном случае на экране ничего не отображается. В случае проверки псевдонима обратите внимание, что возвращается фактическая учетная запись электронной почты, с которой сопоставлен псевдоним:
Обратите внимание, что мы НЕ аутентифицируемся по учетным данным, установленным для каждой учетной записи электронной почты, мы только тестируем способность Postfix обнаруживать эти записи в базе данных.
Таким образом, если вы получаете результат, отличный от приведенного выше, убедитесь, что вы используете действительную пару пользователь/пароль в mariadb-vdomains.cf, mariadb-vusers.cf и mariadb-valias.cf (или как вы хотите назвать эти файлы).
Настройка Dovecot
В качестве сервера IMAP/POP3 Dovecot предоставляет пользователям возможность использовать Mail User Agent (MUA или также известный как клиент), например Thunderbird или Outlook, и это лишь несколько примеров доступа к их почте.
Для начала давайте создадим пользователя и группу для обработки электронной почты (это нам понадобится, поскольку наши учетные записи электронной почты не связаны с пользователем системы). Вы можете использовать другие UID и GID (кроме 5000, как показано ниже), если они не используются и имеют большое число:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Настройки Dovecot разделены на несколько файлов конфигурации (убедитесь, что следующие строки раскомментированы и/или отредактируйте их, чтобы они соответствовали настройкам, указанным ниже).
В /etc/dovecot/dovecot.conf
:
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf
В /etc/dovecot/conf.d/10-auth.conf
(включите только аутентификацию через SQL и оставьте другие методы аутентификации закомментированными):
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
В /etc/dovecot/conf.d/auth-sql.conf.ext
(обратите внимание, что мы будем хранить электронные письма в каталоге с именем yourdomain.com внутри / home/vmail, который необходимо создать, если он не существует. В нашем случае мы использовали mkdir /home/vmail/linuxnewz.com для управления электронной почтой для этого домена):
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}
Отдельные почтовые ящики для учетных записей пользователей будут созданы при первом получении электронных писем для таких учетных записей.
В /etc/dovecot/conf.d/10-mail.conf
:
mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl
В /etc/dovecot/conf.d/10-master.conf
:
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
}
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
}
}
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
}
service dict {
unix_listener dict {
}
}
В /etc/dovecot/conf.d/10-ssl.conf
(замените пути к сертификату и ключу, если вы планируете использовать сертификат, подписанный центром сертификации):
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
В /etc/dovecot/dovecot-sql.conf.ext
введите информацию о вашей базе данных и учетные данные администратора, созданного в Части 1.
Важно: если ваш пароль содержит звездочку (#)
, вам нужно будет заключить строку подключения, как показано в примере ниже:
driver = mysql
connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';
Кроме того, вы можете настроить ведение журналов для Dovecot отдельно от Postfix в /etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot.log
Наконец, убедитесь, что журнал Dovecot доступен пользователю dovecot:
chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log
Проверьте и исправьте конфигурацию Postifix и включите SMTP, POP3 и IMAP в брандмауэре.
Если у вас возникнут какие-либо проблемы при настройке Postfix и/или Dovecot, вместо отправки всех файлов конфигурации с просьбой о помощи вы можете получить сводку конфигурации (только строки без комментариев) с помощью:
postconf –n # Summary for /etc/postfix/main.cf
postconf –M # Summary for /etc/postfix/master.cf
doveconf –n # Summary of all configuration files for Dovecot
Кроме того, убедитесь, что почтовые ящики доступны для чтения только vmail:
chown –R vmail:vmail /home/vmail
Файлы конфигурации также должны быть доступны для чтения пользователями vmail и dovecot:
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
Наконец, убедитесь, что вы включили SMTP, POP3 и IMAP через брандмауэр:
firewall-cmd --add-port=143/tcp
firewall-cmd --add-port=143/tcp --permanent
firewall-cmd --add-port=110/tcp
firewall-cmd --add-port=110/tcp --permanent
firewall-cmd --add-port=587/tcp
firewall-cmd --add-port=587/tcp --permanent
Настройте Thunderbird в качестве почтового клиента для Postfix
Обеспечив доступ через брандмауэр к портам, используемым в электронной почте, пришло время настроить почтовый клиент. Используя [email и соответствующий пароль, а также mail.linuxnewz.com в качестве сервера IMAP (или POP3) и SMTP, мы готовы начать отправлять и получать электронные письма на и с такого аккаунта:
Вы можете спокойно игнорировать отображаемое предупреждающее сообщение, поскольку вы используете сертификат, не подписанный доверенным сторонним центром сертификации:
Давайте составим краткое тестовое письмо и нажмем «Отправить»:
Когда будет предложено принять самозаверяющий сертификат для исходящего сервера, подтвердите его, как и раньше:
Наконец, перейдите к адресу электронной почты и проверьте, получили ли вы только что отправленное письмо. Если да, ответьте на него и посмотрите, доставлено ли оно обратно в исходный почтовый ящик (в противном случае обратитесь к журналу Postfix по адресу /var/log/maillog или журналу Dovecot по адресу /var). /log/dovecot.log для получения информации об устранении неполадок):
Теперь у вас есть работающий почтовый сервер Postfix и Dovecot, и вы можете начать отправлять и получать электронные письма.
Краткое содержание
В этой статье мы объяснили, как настроить Postfix и Dovecot для обработки почтового трафика на вашем сервере Linux. Если что-то не работает так, как указано в этой статье, обязательно уделите время проверке документации Postfix и Dovecot.
Обратите внимание: хотя настройка почтового сервера Postfix — непростая задача, это полезный опыт для каждого системного администратора.
Если после изучения документации вы обнаружите, что все еще испытываете трудности с Postfix и/или Dovecot, напишите нам, используя форму комментариев ниже, и мы будем рады вам помочь. помочь вам (не забудьте загрузить в онлайн-хранилище конфигурацию Postfix и Dovecot, полученную с помощью postconf и doveconf, как описано в этой статье).