Установка и настройка Postfix+Dovecot

Установка 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

Возврат к списку