Установка почтового сервера на основе Postfix и Dovecot 2.xx |
Обновлено: 15.06.2025 - 21:55
Когда-то давно написал статью по настройке почтового сервера. Но со временем она стала не актуальна. Прошло пару лет и сменилась версия Dovecot. Вместе с ней сменились и конфигурационные файлы. Кроме того, в комментариях к первой статье люди просили рассказать о прикручивании всей этой системы к домену. В результате получилась вот такая статья. Все действия проводились на Ubuntu 12.04.
Вначале устанавливаем Postfix и Dovecot
$sudo aptitude install postfix dovecot-common dovecot-imapd
Отказываемся от предложенных вариантов настроек. Подразумевается, что все настроим сами без никакого автоматизма со стороны разработчиков.
Постинсталляционный скрипт сообщит, что в таком состоянии Postfix работать не может.
Создадим недостающий файл конфигурации:
$ sudo touch /etc/postfix/main.cf
На этом установка завершена.
Настройка Postfix
Открываем на редактирование файл /etc/postfix/main.cf и заполним его следующими данными:
#Так наш сервер будет представляться при отправке и получении почты
smtpd_banner = $myhostname ESMTP (ubuntu)
biff = no #Отключаем использование comsat
#Запрещаем автоматически дополнять неполное доменное имя в адресе письма
append_dot_mydomain = no
queue_directory = /var/spool/postfix #Указываем каталог очереди для Postfix
myhostname = mail.study.local #Указываем имя нашего хоста
alias_maps =
myorigin = study.local
mydestination = localhost #Указываем, для каких доменов будем принимать почту
#Указываем, для каких виртуальных доменов будем принимать почту
virtual_mailbox_domains = study.local
virtual_mailbox_base = /var/spool/mail/ #Начало пути для хранения почты
virtual_alias_maps = hash:/etc/postfix/virtual #Файл с описанием почтовых алиасов
virtual_mailbox_maps = hash:/etc/postfix/vmailbox #Файл с описанием почтовых ящиков
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
mynetworks = 127.0.0.0/8 #Указываем список доверенных подсетей
recipient_delimiter = +
inet_interfaces = all #Принимаем соединения на всех интерфейсах
#Описываем авторизацию через Dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_helo_required = yes #Обязательно при соединении требовать helo
#Далее настраиваем фильтры приема/отправки почты
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
check_helo_access hash:/etc/postfix/helo.list,
check_sender_access hash:/etc/postfix/ext_sender,
reject_unauth_destination,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_non_fqdn_hostname,
reject_invalid_hostname,
reject_unknown_hostname
Создадим файл /etc/postfix/helo.list
#touch /etc/postfix/helo.list
Откроем его на редактирование и внесем в него строку:
study.local 550 Don't use my hostname
И выполним его хеширование:
#postmap /etc/postfix/helo.list
Создадим файл /etc/postfix/ext_sender
#touch /etc/postfix/ext_sender
Откроем его на редактирование и внесем в него строку:
study.local 550 Do not use my domain in your envelope sender
И выполним его хеширование:
#postmap /etc/postfix/ext_sender
Настройка Dovecot
Рассмотрим настройку Dovecot версии 2.xx.
Теперь в каталоге /etc/dovecot мы имеем много файлов конфигурации. При чем даже с подкаталогами.
Можно, конечно, всю конфигурацию свести в один файл, но это будет не спортивно и будет противоречить тому, что задумали разработчики.
Откроем основной файл конфигурации /etc/dovecot/dovecot.conf и приведем его к такому вот виду:
#По какому протоколу работаем
protocols = imap
#Слушаем соединения на всех интерфейсах по протоколу IPv4
listen = *
#Рабочий каталог
base_dir = /var/run/dovecot/
#Имя инстанса (для отображения в логе)
instance_name = dovecot
#Строка приветствия
login_greeting = Dovecot ready.
#Отключать клиентские соединения при выключении или перезагрузке мастер-сервиса
shutdown_clients = yes
#Сокет управляющего сервиса doveadm
doveadm_socket_path = doveadm-server
#Подключаем отдельные файлы конфигурации
!include conf.d/*.conf
Теперь переходим в каталог /etc/dovecot/conf.d
Откроем в нем файл 10-auth.conf и пропишем в нем две строки:
disable_plaintext_auth = no
auth_mechanisms = plain login
Далее отредактируем файл 10-mail.conf
mail_location = maildir:/var/spool/mail/study.local/%n
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = virtual
valid_chroot_dirs = /var/spool/mail/
!include auth-passwdfile.conf.ext
Далее нас будет интересовать файл 10-master.conf
service imap-login {
inet_listener imap {
#port = 143
}
inet_listener imaps {
#port = 993
#ssl = yes
}
}
service auth {
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
# Auth process is run as this user.
user = postfix
group = postfix
}
В файле ssl.conf нужно прописать
ssl = no
Теперь нужно создать пользователя.
Если посмотреть файл auth-passwdfile.conf.ext то мы увидим, что логины и пароли пользователей должны храниться в файле /etc/dovecot/users со схемой шифрования CRYPT
Создадим запись для пользователя student с паролем 123.
$doveadm pw -s CRYPT -u student -p 123
Полученные данные внесем в файл /etc/dovecot/users
student:{CRYPT}CaKFEZXiRl/aE:5000:5000
Если хотите свести конфигурацию в один файл — это тоже можно сделать.
Просто нужно удалить все из /etc/dovecot/dovecot.conf и заполнить его всеми вышеописанными строками из всех файлов. Только не забыть добавить еще и содержимое файла /etc/dovecot/conf.d/auth-passwdfile.conf.ext. То есть строки:
passdb {
driver = passwd-file
args = scheme=CRYPT username_format=%u /etc/dovecot/users
}
userdb {
driver = passwd-file
args = username_format=%u /etc/dovecot/users
}
Настройка авторизации в AD
Для того, что бы наш почтовый сервер использовал учетные данные пользователей, почтовые адреса и почтовые псевдонимы из домена Windows нужно, прежде всего, что бы там эти данные были.
Подготовка контроллера домена
Пускай у нас есть контроллер домена study.local на базе Windows 2003 с IP-адресом 192.168.0.10. Создадим в домене двух пользователей — Student1 и Student2. В поле e-mail обязательно укажем их почтовые адреса — student1@study.local и, соответственно, student2@study.local. Кроме этого нужно создать служебную учетную запись, для взаимодействия нашего почтового сервера с контроллером домена. По этому создадим в домене пользователя mailadmin с паролем passwd123
Для создания почтовых псевдонимов (списков рассылки) создадим в домене группу allstudents. В поле e-mail укажем почтовый адрес allstudents@study.local и включим в эту группу пользователей Student1 и Student2.
Теперь рассмотрим подключение нашего почтового сервера к AD
Нам необходимо будет доустановить два пакета — postfix-ldap и dovecot-ldap
#aptitude install postfix-ldap dovecot-ldap
Настройка Dovecot
Откроем на редактирование файл /etc/dovecot/conf.d/10-auth.conf
В конце этого файла нужно закомментировать строку
#!include auth-passwdfile.conf.ext
и, соответственно, раскомментировать
!include auth-ldap.conf.ext
Посмотрев в файл auth-ldap.conf.ext мы увидим, что параметры соединения с сервером AD хранятся в файле /etc/dovecot/dovecot-ldap.conf.ext
Откроем его
# nano /etc/dovecot/dovecot-ldap.conf.ext
И в конец файла добавим настройки работы с контроллером домена.
#Указываем адрес контроллера домена
hosts = 192.168.0.10
# вместо глобального использования логина администратора для "привязки"
#(bind) к ldap-серверу будет использоваться логин и пароль
# аутентифицирующегося пользователя
auth_bind = yes
#Указываем версию протокола
ldap_version = 3
#Указываем местонахождение учетных записей пользователей в домене
base = cn=Users,dc=study,dc=local
# Указываем логин и пароль, под которыми мы будем читать данные из AD
dn = cn=mailadmin,cn=Users,dc=study,dc=local
dnpass = passwd123
deref = never
# Искать данные по всему поддереву
scope = subtree
# Фильтр для выборки пользователей
user_filter = (&(ObjectClass=person)(sAMAccountName=%u))
# Фильтр для проверки паролей
pass_filter = (&(ObjectClass=person)(sAMAccountName=%u))
Настройка Postfix
Откроем файл /etc/postfix/main.cf и поменяем в нем несколько строк:
virtual_alias_maps = ldap:/etc/postfix/ldapalias
virtual_mailbox_maps = ldap:/etc/postfix/ldap_virtual_mailbox_maps.cf
То есть мы указали новые базы хранения почтовых ящиков и псевдонимов.
Теперь создадим файлы конфигурации запросов в LDAP
ldap_virtual_mailbox_maps.cf
server_host = 192.168.0.10
bind = yes
bind_dn = cn=mailadmin,cn=Users,dc=study,dc=local
bind_pw = passwd123
search_base = cn=Users,dc=study,dc=local
query_filter = (&(mail=%s))
result_attribute = mail
result_format = %d/%u/
ldapalias
server_host = 192.168.0.10
bind = yes
bind_dn = cn=mailadmin,cn=Users,dc=study,dc=local
bind_pw = passwd123
search_base = cn=Users,dc=study,dc=local
query_filter = (&(objectClass=group)(mail=%s))
leaf_result_attribute = mail
special_result_attribute = member
Содержимое файлов формируется по тому же принципу, что и в файле /etc/dovecot/dovecot-ldap.conf
------------------------
Восстановление сайтов из Вебархива
Размещение по доскам объявлений России
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Компьютерные советы
Комментарии |