Цель: получить минимально работающий почтовый сервер, используя только Postfix и Dovecot, с минимальным изменением настроек по умолчанию. Получить каркас системы, на основе которого можно, в дальнейшем, настраивать спам фильтры, работу с базами данных, LDAP…
Почтовая система должна:
Настройка проводилась в CentOS 6. Postfix 2.6.6, Dovecot 2.0.9. Никакие особенности ОС не применялись.
Условно, почтовые системы можно разделить по методу доступа к почтовым ящикам и списку пользователей.
Основные плюсы классической системы по сравнению с упрощенной:
Основные недостатки классической системы по сравнению с упрощенной:
Несмотря на то, что Dovecot является ядром системы, выполняющим много функций. Его настройка не должна вызвать, каких-либо затруднений. Возможно, это связано с тем, что Dovecot имеет дело только с аутентифицированными клиентами, что нельзя сказать про Postfix. Имена будем задавать в формате username@domainname.
Теперь достаточно добавлять имена и пароли пользователей в файл /etc/dovecot/users, и почтовые ящики будут созданы автоматически, после первой успешной аутентификации пользователя. Или, забегая вперед, после получения пользователем письма.
Часть 2: Postfix.
Почтовая система должна:
- Поддерживать любое количество доменов и пользователей.
- Обслуживать пользователей, не привязанных к локальным учетным записям.
- Обеспечивать доступ к почтовым ящикам по протоколам POP3, IMAP с поддержкой TLS.
- Обеспечивать отправку и прием писем по протоколу SMTP с поддержкой TLS.
Настройка проводилась в CentOS 6. Postfix 2.6.6, Dovecot 2.0.9. Никакие особенности ОС не применялись.
Структура почтовой системы
Условно, почтовые системы можно разделить по методу доступа к почтовым ящикам и списку пользователей.
Основные плюсы классической системы по сравнению с упрощенной:
- Производительность. Postfix имеет доступ к почтовым ящикам и может быстрее и проще, нежели во втором случае, доставить почту непосредственно пользователю.
- Независимость частей системы друг от друга. В случае отключения Dovecot, Postfix продолжит свою основную функцию — принимать письма.
Основные недостатки классической системы по сравнению с упрощенной:
- Формат почтовых ящиков должен быть понятен обеим программам.
- Необходимо синхронизировать доступ к почтовым ящикам.
- Безопасность. Необходимы дополнительные полномочия для Postfix. Postfix должен иметь прямой доступ к почтовым ящикам и списку пользователей.
- Настройка и сопровождение немного сложнее.
Dovecot
Несмотря на то, что Dovecot является ядром системы, выполняющим много функций. Его настройка не должна вызвать, каких-либо затруднений. Возможно, это связано с тем, что Dovecot имеет дело только с аутентифицированными клиентами, что нельзя сказать про Postfix. Имена будем задавать в формате username@domainname.
- Создадим пользователя «vmail» для хранения почты, без «шелл» доступа, но с домашней папкой «/home/vmail».
- Настроим аутентификацию.
(login это тот же plain, но для Outlook)auth_mechanisms = plain login
Ограничение передачи пароля только после установки TLS соединения, выполняется в Dovecot по умолчанию и не требует дополнительных настроек. Так как мы будем использовать TLS, никаких других механизмов аутентификации нам не нужно, только PLAIN. Самоподписанный сертификат, в CentOS, создается при установке Dovecot в папке, /etc/pki/dovecot/certs/, воспользуемся пока им, для настройки TLS.mail_gid = vmail mail_uid = vmail
Хочу обратить ваше внимание на один важный момент. Нужно различать, механизм аутентификации от метода хранения аутентификационных данных. Хотя эти два понятия могут называться одинаково, это две разные вещи. Подробности здесь и здесь.
- Настроим, где будем хранить почтовые ящики пользователей.
Для каждого виртуального пользователя задаем домашнюю папку в формате — /home/vmail/domain/username,
и местоположение почты в домашней папке — /home/vmail/domain/username/Maildir,mail_home = /home/vmail/%d/%n
Формат почтовых ящиков Maildir выбран для упрощения перехода к классической системе, в случае необходимости, т.к. Postfix поддерживает Maildir. Но если вы не планируете возврат к классической системе, можно выбрать любой формат почтовых ящиков поддерживаемый Dovecot.mail_location = maildir:~/Maildir
- Следующие две директивы задают, где и как Dovecot будет искать имена и пароли пользователей.
Мы использовали для этого файл, /etc/dovecot/users, имеющий формат стандартного файла паролей /etc/passwd.userdb { args = username_format=%u /etc/dovecot/users driver = passwd-file } passdb { args = scheme=ssha512 username_format=%u /etc/dovecot/users driver = passwd-file }
Пример файла паролей (пароль обрезан):
Для безопасности, мы не храним пароли пользователей в открытом виде, а храним их подсоленные SHA512. Для заполнения файла «/etc/dovecot/users», будем использовать этот скрипт с двумя параметрами, именем пользователя и паролем пользователя.user1@example1.com:{SSHA512}2YT51xuhilbvb4vYRIb1oj1EvrKFszhf2MNw=:::::: user3@example3.com:{SSHA512}GdBv9GEE1rfFpd4+fzXS+UKh4x6gTpTaH4=::::::
#!/bin/sh echo $1:$(doveadm pw -s ssha512 -p $2):::::: >> /etc/dovecot/users
- Настроим сервисы для связи с Postfix.
Для поиска имен пользователей и SASL аутентификации.
Для доступа к почтовым ящикам пользователей.service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-userdb { mode = 0600 user = vmail } }
Более подробно можно почитать: здесь про LMTP, здесь про LMTP и Postfix, а здесь про SASL.service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } user = vmail } protocol lmtp { postmaster_address = postmaster@example1.ru }
Итоговый «devconf –N»:
# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-504.16.2.el6.x86_64 x86_64 CentOS release 6.6 (Final)
auth_mechanisms = plain login
mail_gid = vmail
mail_home = /home/vmail/%d/%n
mail_location = maildir:~/Maildir
mail_uid = vmail
mbox_write_locks = fcntl
passdb {
args = scheme=ssha512 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
}
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
userdb {
args = username_format=%u /etc/dovecot/users
driver = passwd-file
}
protocol lmtp {
postmaster_address = postmaster@example.com
}
Теперь достаточно добавлять имена и пароли пользователей в файл /etc/dovecot/users, и почтовые ящики будут созданы автоматически, после первой успешной аутентификации пользователя. Или, забегая вперед, после получения пользователем письма.
Часть 2: Postfix.
Комментарии (3)
foxmuldercp
26.05.2015 14:10Я в свое время натыкался на вагон инструкций postfix + dovecot + mysql/postgres + postfixadmin + rcube + clamav + milters, когда надо было развернуть почтоную систему на кажется 2 десятка (под)доменов.
Но штука в том, что в те времена ceph и все такое кластеризационное было в зачатках если не в стадии проекта.
Вот как бы эту штуку побороть. я пока думаю в сторону ceph'а
avsavchenko
iRedmail не?