Устанавливаем в 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

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