Устанавливаем в Oracle Linux 8 интегрированный с Active Directory почтовый сервер на базе Cyrus IMAP и Postfix
Настройка входящей почты
устанавливаем необходимые пакеты
dnf install cyrus-sasl cyrus-sasl-plain cyrus-imapd postfix
редактируем файл /etc/sysconfig/saslauthd
1 | MECH=ldap |
создаем файл /etc/saslauthd.conf
1 2 3 4 5 6 7 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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
1 2 3 4 5 6 | lmtpsocket: /var/lib/imap/socket/lmtp #httpmodules: caldav carddav virtdomains: userid tls_required: yes autocreate_quota: 0 autocreate_post: 1 |
редактируем файл /etc/postfix/main.cf
1 2 3 4 5 6 7 8 9 10 | 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
1 2 | green.com ok yellow.com ok |
создаем файл /etc/postfix/recipients
1 2 | cat@green.com ok dog@yellow.com ok |
создаем хэш-таблицы /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 cat@green.com -a cat@green.com localhost
imtest -t "" -u dog@yellow.com -a dog@yellow.com localhost
подключаемся к серверу на порт TCP/25 и пробуем отправить тестовые письма, используя SMTP-команды
1 2 3 4 5 6 7 | 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
1 2 3 4 5 6 7 | 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 '\0user@domain.com\0password' | base64