postfix почтовый сервер для нескольких доменов

Понадобилось мне настроить почтовый сервер что бы он обслуживал 4 домена.
Пользователей не много будет у этого почтового сервера. 4 почтовых ящика по одному на домен.
Также у меня этот сервер еще отвечает и за массовую рассылку почты от 3 доменов.
Будем использовать postfix dovecot sasl
Самже почтовый сервер будем подымать на системе Debian Linux.
Приступим,
Для настройки виртуального почтового нужно установить почтовый сервер.

# aptitude install postfix

Теперь нам надо натсроить только что установленный почтовый сервер posftix.
Добавим поддержку виртуальных пользователей.
Подданными который я в нес в конфигурационный файл я поясню. остальные стандартные настройки.

# nano /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
#
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_note_starttls_offer = yes
smtpd_tls_security_level = may
#
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
anvil_rate_time_unit = 300s
smtpd_client_message_rate_limit = 30
smtpd_soft_error_limit = 1
smtpd_error_sleep_time = 15
smtpd_hard_error_limit = 2
#
myhostname = mail.it.ru
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = it.local, localhost.ru, , localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 10240000
recipient_delimiter = +
inet_interfaces = all
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
virtual_mailbox_domains = domain.lock domain1.local domain2.local likeunix.ru
virtual_mailbox_base = /var/spool/mail/vhosts
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
relay_domains = $mydestination, $virtual_mailbox_domain
# SASL
anvil_rate_time_unit = 300s
smtpd_client_message_rate_limit = 30
smtpd_soft_error_limit = 1
smtpd_error_sleep_time = 15
smtpd_hard_error_limit = 2
smtpd_sasl_auth_enable = yes
smtpd_sasl_application_name = smtpd
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_client_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_pipelining,permit
smtpd_helo_restrictions = permit
smtpd_sender_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_sender,reject_unknown_sender_domain,reject_unverified_sender,permit
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_recipient,reject_unauth_destination,reject_unknown_recipient_domain,reject_unverified_recipient,permit
smtpd_data_restrictions = permit
smtpd_end_of_data_restrictions = permit
smtpd_etrn_restrictions = permit

Такс теперь по подробнее о настройках.
Добавим к пункту relay_domains парметр $virtual_mailbox_domains

relay_domains = $mydestination, $virtual_mailbox_domains

Таким образом мы указали postfix`y принимать почту для доменов перечисленных в переменных mydestination и в virtual_mailbox_domains.
теперь укажим виртуальные почтовые ящики.

virtual_mailbox_domains = domain.lock domain1.local domain2.local likeunix.ru
# Даем понять почтовому серверу какие он домены должен обслуживать.
virtual_mailbox_base = /var/spool/mail/vhosts
# Указываем базовый путь, где будут лежать наши почтовые ящики.
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
# Укажим путь до файла, где прописаны названия виртуальных почтовых ящиков и соответствующие им относительные пути до почтовых хранилищ.
virtual_minimum_uid = 100
# Минимальный uid ( идентификатор пользователя ) который имеет владелец почтовых хранилищ.
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
# Укажим uid и gid владельца всех виртуальных почтовых хранилищ.
virtual_alias_maps = hash:/etc/postfix/virtual
# Укажим путь где будут храниться у нас алисы пользователей.

Продолжаем дальше разбирать параметры.

relay_domains = $mydestination, $virtual_mailbox_domain
# Здесь укажим те домены, почту которых наш сервер будет стараться переслать дальше соответственно старшинству MX записей для этого домена.
anvil_rate_time_unit = 100s
smtpd_client_message_rate_limit = 60
# Ограничение отправки писем за временной интервал
При данных параметрах с одного ящика можно отправить не более 60 писем за 100 секунд.
smtpd_soft_error_limit = 1
# количество ошибок удаленного клиента SMTP разрешается делать без доставки почты до сервера Postfix SMTP замедляет все свои ответы.
smtpd_error_sleep_time = 15
# ответ SMTP сервера задержки после клиента составил более $ smtpd_soft_error_limit ошибки, и меньше, чем smtpd_hard_error_limit ошибки, без доставки почты.
smtpd_hard_error_limit = 2
# максимальное количество ошибок удаленного клиента SMTP разрешается делать без доставки почты. Сервер Postfix SMTP отключается, когда предел превышен.
Если клиент вызывает ошибки и общее количество ошибок в текущем SMTP сеансе меньше или равно значению параметра smtpd_soft_error_limit, то каждая ошибка приводит к задержке на значение smtpd_error_sleep_time.
Вообщем максимальное количество ошибок, которое может сделать удаленный SMTP клиент.
smtpd_sasl_auth_enable = yes
# Включаем sasl для postfix.
smtpd_sasl_application_name = smtpd
# Укажим postfix использовать файл smtpd.conf для sasl.
smtpd_sasl_local_domain =
# Добавляет имя домена для клиентов использующих smtp.
smtpd_sasl_security_options = noanonymous
# не разрешаем никому отправлять почту с нашего сервера без авторизации!
smtpd_sasl_type = dovecot
# за авторизацию будет отвечать dovecot
smtpd_sasl_path = private/auth
# указывается относительный путь до сокета, для передачи функций аутентификации пользователей от Postfix серверу Dovecot. Полный путь до сокета складывается из пути до директории очереди Postfix + "private/auth" = "/var/spool/postfix" + "private/auth" = "/var/spool/postfix/private/auth".
broken_sasl_auth_clients = yes
# Добавил специально для поддержки outlook и outlook express.
smtpd_client_restrictions
# IP-адрес и (если возможно) доменное имя клиентского компьютера (или другого почт.сервера), который соединяется с сервером postfix для отправки письма.
smtpd_helo_restrictions
# имя компьютера и (если возможно) его IP-адрес по имени, переданному в команде HELO/EHLO hostname.
smtpd_sender_restrictions
# адрес отправителя, указанный в команде MAIL FROM: 
smtpd_recipient_restrictions
# адрес получателя, указанный в команде RCPT TO: 
smtpd_data_restrictions
# Тоже что smtpd_client_restrictions и smtpd_recipient_restrictions,
smtpd_end_of_data_restrictions
# Тоже что smtpd_client_restrictions и smtpd_data_restrictions.
smtpd_etrn_restrictions
# ТОже что smtpd_client_restrictions и smtpd_helo_restrictions.
#описание различных ограничений на приём, отправку.
#сюда можно вставлять проверки в блэклистах
mailbox_size_limit
# Емкость ящиков.
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
# эти парметры мне нужны были для рассылки, описание смотреть тут.
smtpd_tls_security_level = may
# Включаем tls для тех, кто умеет, а остальные будут не зашифрованные.
smtpd_tls_loglevel = 1
#Уровень логирования.
smtpd_tls_received_header = yes
# У меня в логах сыпались ошибки на тему (No client certificate requested), дабвил этот параметр. и все прекратилось, нужный параметр.
Запрашивать заголовки сообщений с информацией о версии протокола и шифрования.
smtpd_tls_session_cache_timeout = 3600s
#Течение данные времени кэш TLS-сессии считаются актуальным.

Остальные параметры по стандарту.
В этом конфигурационном файле я только в нес изменения касающиеся порта smpts ( 465 ) и авторизации пользователей посредством dovecot.

# cat /etc/postfix/master.cf
Этим мы разрешаем отправлять почту по безопасному порту smpts ( 465 ).
smtps     inet  n       -       -       -       -    smtpd 
  -o  smtpd_tls_wrappermode=yes
  -o  smtpd_sasl_auth_enable=yes
  -o  smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o  milter_macro_daemon_name=ORIGINATING 
также авторизацию dovecot добавим в конец файла
dovecot unix  - n n -  -  pipe flags=DRhu user=virtual:virtual argv=/usr/lib/dovecot/deliver -d ${recipient}
#

теперь создадим файл touch /etc/postfix/vmailbox
с таким содержимым.

nano /etc/postfix/vmailbox
[email protected] domain.local/info/
[email protected] likeunix.ru/sasl/
[email protected] likeunix.ru/bodrol/

Где [email protected] название почтового ящика, а domain.local/info/ это относительный путь до почтового хранилища.
После наших изменений с файлом, вводим команду

# postmap /etc/postfix/vmailbox

теперь должен появиться файл /etc/postfix/vmailbox.db
И сразу же создадим файл с алиасами /etc/postfix/virtual , если мы никаких алиасов не назначаем, то все равно содаим файл он должен быть.
У меня так выглядит файл алиасов

# nano /etc/postfix/virtual
[email protected] [email protected],[email protected]

Создадим.

# postmap /etc/postfix/virtual

также появиться файл virtual.db
теперь нам нужно создать директории для наших доменов, что бы почту в них складывалась.

# /var/spool/mail/ &&  mkdir vhosts
# mkdir /var/spool/mail/vhosts/likeunix.ru/

Идем дальше и создаем пользователя с uid и gid 5000.
Чтобы он был владельцем всех наших почтовых хранилищ.

# groupadd -g 5000 virtual 
# useradd -u 5000 -g 5000 virtual

Теперь мы укажим владельцем virtual директории /var/spool/mail/vhosts и ее дочерних директорий с файлами.
Изменим права рекурсивно, что бы на всех директориях с файлами поменялся владелец.

# chown -R virtual:virtual /var/spool/mail/vhosts

теперь мы может перезапустить сервис postfix.

# /etc/init.d/postfix restart

Установим dovecot sasl

# aptitude install dovecot libsasl2-2 libsasl2-modules

Теперь мы приступ к настройке dovecot.

# cat /etc/dovecot/dovecot.conf
protocols = pop3 pop3s
# Указываем какой протокол используем.
disable_plaintext_auth = no
# Указываем что можно передавть данные для авторизации на сервере в открытом виде.
log_path = /var/log/dovecot
# Лог файл.
log_timestamp = "%Y-%m-%d %H:%M:%S "
# Префикс для каждой записи в лог-файл.
ssl_cert_file = /etc/postfix/ssl/smtpd.pem
ssl_key_file = /etc/postfix/ssl/smtpd.pem
# Сертификаты.
mail_debug = no 
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
# Для отладки.
mail_location = maildir:/var/spool/mail/vhosts/%d/%n
# Расположение почтовых ящиков. (%d - домен, %n - имя пользователя).
mail_uid = 5000
mail_gid = 5000
# Владелец почтовых директорий.
mail_privileged_group = virtual
# Группа владелец почтовых директорий.
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
# Если необходима совместимость UIDL с другими POP3-серверами, используте:
#  UW's ipop3d         : %08Xv%08Xu
#  Courier             : %f or %v-%u (оба могут быть использованы)
#  Cyrus (= 2.1.4)    : %v.%u
#  Dovecot v0.99.x     : %v.%u
#  tpop3d              : %Mf
#
# Имейте ввиду, что Outlook 2003 имеет проблемы с форматом %v.%u, который
# является для Dovecot форматом по умолчанию, и если настраивается новый
# сервер, то было бы неплохо изменить этот параметр.
}
protocol managesieve {
}
auth_username_format = %Ln@%Ld
auth_debug = yes
# для отладки.
auth default {
mechanisms = plain login digest-md5 cram-md5
# Указываем механизмы авторизации.
passdb passwd-file {
args = /etc/dovecot/passwd
# Файл с паролями к почтовым ящикам.
}
userdb passwd-file {
args = /etc/dovecot/users
# Файл с пользователями к почтовым ящикам.
}
# Выше видем запрос параметров виртуальных почтовых пользователей.(логин, пароль)
user = root
socket listen {
master {
      path = /var/run/dovecot/auth-master
      mode = 0600
      user = virtual
    }
client {
path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
# от кого будет запускаться файл.
    }
  }
}
dict {
}
plugin {
}
#

Теперь создадим два файла:
# nano /etc/dovecot/users

[email protected]::5000:5000
[email protected]::5000:5000

Теперь создадим пароли в зашифрованном виде.

# dovecotpw -s CRAM-MD5 -u [email protected]

И после выполнения действия создания пароля, на экране появиться зашифрованный пароль мы его копируем в файл passwd.
И для каждого почтового ящика.
# nano /etc/dovecot/passwd

[email protected]:{CRAM-MD5}0eb13ba7s6f7sdwkbvxhgufwyhgyqwgey23847yt7w4hr543yg5yu34t58ygbh3y
[email protected]:{CRAM-MD5}40sdhd8f780sd0f9isd09hjhj4bgfg4f5jhgjhgj43h5jhjnjh43j5hjnjdfhdsf

Вот в принципе и все.Проверяем только что собранный почтовый сервер.
Осталось только сменить mx запись в днс зоне домена.
Рекомендую первой сделать наш сервер, а второй записью mx сделать хостера почтовый сервер.
Несколько команд для управлением очереди писем.
Просмотреть очередь писем.

postqueue -p
mailq

Отправить все письма находящиеся в очереди.

postqueue -f
mailq -q

Отправить все письма для определенного домена.

postqueue -s locahost.locak

После изменений в конфигурации иногда необходимо перезапустить очередь, что бы сообщения в очереди начали обрабатываться заново.

postsuper -r ALL
или
postfix stop && postsuper -r ALL && postfix start (так правильней)

Очистки очереди писем.

postsuper -d ALL

Удаления писем от определенного адресата.

mailq|grep '[email protected]'|awk '{print $1}'|xargs -J{} -n1 postsuper -d {} deferred

Также можно к нему сделать dkim подписи для каждого из почтовых доменом.

Источник

Запись опубликована в рубрике Postfix. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91