Устанавливаем в Oracle Linux 8 интегрированный с Active Directory почтовый сервер на базе Cyrus IMAP и Postfix
Настройка входящей почты
устанавливаем необходимые пакеты
dnf install cyrus-sasl cyrus-sasl-plain cyrus-imapd postfix
редактируем файл /etc/sysconfig/saslauthd
MECH=ldap
создаем файл /etc/saslauthd.conf
ldap_servers: ldaps://dc.domain.local:636
ldap_tls_check_peer: yes
ldap_tls_cacert_file: /etc/ssl/certs/domain.local.crt
ldap_bind_dn: CN=cyrus,OU=Special Users,DC=domain,DC=local
ldap_bind_pw: some_pass
ldap_search_base: OU=Employees,DC=domain,DC=local
ldap_filter: mail=%U@%r
настраиваем права доступа к файлу /etc/saslauthd.conf
chmod 600 /etc/saslauthd.conf
редактируем файл /etc/cyrus.conf
SERVICES {
#imaps cmd="imapd -s" listen="imaps" prefork=1
#pop3 cmd="pop3d" listen="pop3" prefork=3
#pop3s cmd="pop3d -s" listen="pop3s" prefork=1
#sieve cmd="timsieved" listen="sieve" prefork=0
#nntp cmd="nntpd" listen="nntp" prefork=3
#nntps cmd="nntpd -s" listen="nntps" prefork=1
#http cmd="httpd" listen="http" prefork=3
#https cmd="httpd -s" listen="https" prefork=1
#notify cmd="notifyd" listen="/run/cyrus/socket/notify" proto="udp" prefork=1
lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1
}
DAEMON {
# this is only necessary if using idled for IMAP IDLE
idled cmd="idled"
}
редактируем файл /etc/imapd.conf
lmtpsocket: /var/lib/imap/socket/lmtp
#httpmodules: caldav carddav
virtdomains: userid
tls_required: yes
autocreate_quota: 0
autocreate_post: 1
редактируем файл /etc/postfix/main.cf
myhostname = mail.domain.local
inet_interfaces = all
inet_protocols = ipv4
local_recipient_maps =
relay_recipient_maps =
mailbox_transport =
virtual_mailbox_domains = hash:/etc/postfix/domains
virtual_mailbox_maps = hash:/etc/postfix/recipients
virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp
smtpd_relay_restrictions=defer_unauth_destination
создаем файл /etc/postfix/domains
green.com ok
yellow.com ok
создаем файл /etc/postfix/recipients
создаем хэш-таблицы /etc/postfix/domains.db и /etc/postfix/recipients.db
postmap hash:/etc/postfix/domains
postmap hash:/etc/postfix/recipients
запускаем сервисы и настраиваем их автоматический старт при загрузке системы
systemctl --now enable saslauthd
systemctl --now enable cyrus-imapd
systemctl --now enable postfix
проверяем работу аутентификации
imtest -t "" -u [email protected] -a [email protected] localhost
imtest -t "" -u [email protected] -a [email protected] localhost
подключаемся к серверу на порт TCP/25 и пробуем отправить тестовые письма, используя SMTP-команды
HELO test
MAIL FROM: <src_mail_address>
RCPT TO: <dst_mail_address>
DATA
<test_message_body>
.
QUIT
замечание: для нешифрованного подключения выполняем команду telnet 25, а для шифрованного - openssl s_client -connect :25 -starttls smtp
проверяем, что сообщения были сохранены в папке /var/spool/imap
Настройка исходящей почты
редактируем файл /etc/postfix/master.cf
587 inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=cyrus
-o smtpd_sasl_path=smtpd
-o smtpd_tls_auth_only=yes
-o smtpd_sasl_tls_security_options=noanonymous
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
замечание: параметр smtpd_sasl_path=smtpd означает, что для настройки SASL-аутентификации используется файл /etc/sasl2/smtpd.conf
перезапускаем Postfix
systemctl restart postfix
подключаемся к серверу на порт TCP/587 и пробуем отправить тестовые письма
замечание: аутентификация выполняется посредством SMTP-команды AUTH PLAIN и последующего ввода строки с логином и паролем в кодировке Base64, получить которую можно командой echo -ne '\[email protected]\0password' | base64