Postfix начальная настройка
# yum install postfix # cp /etc/main.cf /etc/main.cf_orig # vi /etc/main.cf
Какой домен подставлять отправителю, если он не указан в заголовке FROM:
myorigin = $mydomain
Слушать на всех необходимых интерфейсах (или перечислить):
inet_interfaces = all
Указываем, для каких доменов принимаем входящую почту:
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
Указываем, откуда брать список локальных пользователей:
local_recipient_maps = unix:passwd.byname $alias_maps
Разрешаем отправлять сообщения локальному серверу:
mynetworks = 127.0.0.0/8
Указываем, откуда брать список алиасов:
alias_maps = hash:/etc/aliases
Виртуальные пользователи:
### *** virtual_mailbox_base = /home/vmail virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 1024 virtual_uid_maps = static:1024 virtual_gid_maps = static:1024
- virtual_mailbox_base — базовый путь хранения почтовых ящиков в системе UNIX.
- virtual_alias_maps — формат и путь хранения алиасов для виртуальных пользователей.
- virtual_mailbox_domains — формат и путь хранения доменов виртуальных пользователей.
- virtual_mailbox_maps — формат и путь хранения почтовых ящиков для виртуальных пользователей.
- virtual_minimum_uid — с какого номера присваивать идентификаторы пользователям.
- virtual_uid_maps — идентификатор пользователя, от которого записываются сообщения.
- virtual_gid_maps — идентификатор группы, от которой записываются сообщения.
# Транспорт virtual_transport = dovecot dovecot_destination_recipient_limit = 1
- virtual_transport — задает доставщика сообщений.
- dovecot_destination_recipient_limit — передача сообщений от Postfix в Dovecot выполняется по заданному количеству (в нашем примере, по 1 шт.)
# Aутентификация SMTP smtpd_sasl_auth_enable = yes smtpd_sasl_exceptions_networks = $mynetworks smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
- smtpd_sasl_auth_enable — разрешает sasl аутентификацию.
- smtpd_sasl_exceptions_networks — исключение сетей от использования шифрования.
- smtpd_sasl_security_options — дополнительные опции настройки sasl.
- broken_sasl_auth_clients — эту опцию прописываем для клиентов MS Outlook.
- smtpd_sasl_type — указывает тип аутентификации.
- smtpd_sasl_path — путь до временных файлов обмена информацией с Dovecot. Указывается либо абсолютный путь, либо относительный queue_directory.
# TLS #smtp_use_tls = yes #smtp_tls_security_level = may smtpd_use_tls = yes #smtpd_tls_security_level = may smtpd_tls_auth_only = yes smtpd_tls_cert_file = /etc/letsencrypt/live/tst-amo.net.ua/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/tst-amo.net.ua/privkey.pem smtpd_tls_CAfile = /etc/letsencrypt/live/tst-amo.net.ua/chain.pem
- smtpd_tls_cert_file — полный путь до публичного сертификата.
- smtpd_tls_key_file — полный путь до приватного сертификата.
- smtpd_use_tls — указывает клиентам на наличие поддержки TLS.
- smtpd_tls_auth_only — использовать только TLS
smtpd_helo_required
- smtpd_helo_required — требовать начинать сессию с приветствия
Создаем файл с настройками обращения к базе с алиасами:
vi /etc/postfix/mysql_virtual_alias_maps.cf user = postfix password = mypassword hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
- где user и password — логин и пароль для подключения к MySQL; hosts — имя сервера баз данных (в нашем случае, локальный сервер); dbname — имя базы данных; query — шаблон запроса к данным.
Создаем файл с инструкцией получения данных по виртуальным доменам:
vi /etc/postfix/mysql_virtual_domains_maps.cf user = postfix password = mypassword hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%u'
И файл с почтовыми ящиками:
vi /etc/postfix/mysql_virtual_mailbox_maps.cf 164/164 100% user = postfix password = mypassword hosts = localhost dbname = postfix query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
Открываем файл master.cf и дописываем в самый конец:
submission inet n - n - - smtpd -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=/var/spool/postfix/private/auth -o smtpd_sasl_security_options=noanonymous -o smtpd_sasl_local_domain=$myhostname smtps inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -d ${recipient}
- необходимо убедиться, что в содержимом файла нет других раскомментированных опций для submission, smtps и dovecot (по умолчанию, их нет). В данном случае, мы настроили работу postfix на портах 25, 465 и 587.
# systemctl restart postfix