Установка Postfix и Dovecot
Вся процедура разворачивания и настройки была проверена на Ubuntu Server 9.10 и 10.04.
Вначале установим Postfix и Dovecot:
$sudo aptitude install postfix dovecot
В процессе установки откажемся от предложенных вариантов настроек, что подразумевает настройки без автоматизма со стороны разработчиков.
Постинсталляционный скрипт сообщит о невозможности работы постфикса в данном состоянии. Поэтому создадим недостающий файл конфигурации:
$ 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 = test.com #Укажем имя нашего хоста alias_maps = hash:/etc/postfix/aliases mydestination = localhost, test.com #Укажем, для каких доменов будем принимать почту mynetworks = 127.0.0.0/8 #Укажем список доверенных подсетей mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all #Укажем прослушивание на всех интерфейсах smtpd_helo_required = yes #Укажем необходимость использования клиентами команды helo #Далее идет настройка ограничений для приема почты smtpd_recipient_restrictions = permit_mynetworks, #Примем всю почту от нашей доверенной подсети 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, #Отклоним сообщение, в случае, если в команде helo неправильно сформировано имя домена reject_unknown_hostname #Отклоним сообщения, если клиент представился неизвестным именем хоста
Создадим файл /etc/postfix/helo.list #touch /etc/postfix/helo.list
Откроем данный файл для редактирования и внесем в него строку:
test.com 550 Don't use my hostname
Далее выполним его хеширование:
#postmap /etc/postfix/helo.list
Создадим файл /etc/postfix/ext_sender #touch /etc/postfix/ext_sender
Откроем файл для редактирования и внесем в него следующую строку:
test.com 450 Do not use my domain in your envelope sender
Выполним его хеширование:
#postmap /etc/postfix/ext_sender
Создадим файл с алиасами на адреса:
#touch /etc/postfix/aliases
Запишем в него:
postmaster root
И прохешируем:
postmap /etc/postfix/aliases
Настройка Dovecot
Откроем для редактирования /etc/dovecot/dovecot.conf и запишем в нем:
protocols = imap imaps
#Опишем поддерживаемые протоколы
disable_plaintext_auth = no
#Разрешим авторизацию в plaintext
log_path = /var/log/dovecot.err
log_timestamp = "%Y-%m-%d %H:%M:%S "
#Опишем логирование
ssl_disable = yes
#Отключим SSL
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_greeting = Dovecot ready.
#Строка приветствия при ответе сервера
mail_location = maildir:/var/spool/mail/%d/%n
#Опишем тип и местонахождения почтовых ящиков
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = mail
#Системная группа пользователей для работы с почтой
valid_chroot_dirs = /var/spool/mail/
protocol imap {
#Пути к исполняемым файлам для работы с IMAP
login_executable = /usr/lib/dovecot/imap-login
mail_executable = /usr/lib/dovecot/imap
}
auth_executable = /usr/lib/dovecot/dovecot-auth
#Настроим вывод отладочных сообщений
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
mechanisms = plain login digest-md5
#Типы допустимых вариантов логина
socket listen {
#Настройка авторизации в Postfix
client {
path = /var/spool/postfix/private/auth
mode = 0666
user = postfix
grop = postfix
}
}
passdb passwd-file {
#Путь к файлу с паролями
args = /etc/dovecot/pass
}
}
Создадим место для хранения почты для нашего домена:
#mkdir -p /var/spool/mail/test.com
Создадим группу virtual и пользователя virtual для работы с почтовыми ящиками:
#groupadd -g 5000 virtual
#useradd -g virtual -u 5000 virtual
Укажем владельца и права доступа к каталогу с почтой:
#chown virtual:virtual /var/spool/mail/test.com
#chmod 770 /var/spool/mail/test.com
Внесем изменения в файлы конфигурации Postfix:
Откроем для редактирования файл /etc/postfix/master.cf и добавим в него строки:
dovecot unix - n n - - pipe flags=DRhu user=virtual:virtual argv=/usr/local/libexec/dovecot/deliver -d ${recipient}
Откроем для редактирования файл /etc/postfix/main.cf и добавим в него строки:
#Опишем доступ к локальным почтовым ящикам
virtual_mailbox_domains = test.com
virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
home_mailbox = Maildir/
#Опишем авторизацию по SMTP для клиентов не из доверенной зоны:
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_recipient_restrictions сразу после permit_mynetworks, строку:
permit_sasl_authenticated,
Это означает, что данный блок будет выглядеть следующим образом:
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
Далее создадим пользователя и почтовый ящик к нему:
Логин user@test.com
Пароль user
Адрес user@test.com
Создадим необходимые файлы в Postfix:
#touch /etc/postfix/vmailbox
#touch /etc/postfix/virtual
Пропишем в Postfix данные о новом почтовом ящике. Для этого в файл /etc/postfix/vmailbox допишем строку:
user@test.com test.com/user/
Создадим для примера алиас на этот почтовый ящик. Для этого в файл /etc/postfix/virtual допишем строку:
user1@test.com user@test.com
Прохешируем эти два файла:
#postmap /etc/postfix/virtual
#postmap /etc/postfix/vmailbox
Далее необходимо перезапустить Postfix:
#/etc/init.d/postfix restart
Внесем данные о нашем пользователе в Dovecot.
Создадим файл с паролями:
#touch /etc/dovecot/pass
Сгенерируем хеш пароля для нашего пользователя
# dovecotpw -s DIGEST-MD5 -u user@test.com
Введем пароль на его запрос. Полученные данные вносим в файл /etc/dovecot/pass:
user@test.com:{DIGEST-MD5}bc5f0e9cb2049bb07d35bb7ad5b89cf4
Проделав все этапы, можно подключиться к нашему серверу почтовым клиентом и проверить работу почтового сервера.
Автор статьи:
Якимчук Сергей,
Руководитель отдела технической поддержки IT Stream