во-первых нужен сертификат, потому как авторизация без ssl - как пиво без рыбки.
сертификат либо подписываем сами, что некошерно
либо просим у центра сертификации, благо есть и халявные
дальше правим exim/configure
раскоментим строку, дабы клиенты могли стартовать защищенное соединение
tls_advertise_hosts = *
прописываем путь к нашему сертификату (если ключ не в том же файле то следующую строку тоже раскоментиваем)
tls_certificate = /etc/ssl/exim.pem
прописываем какие порты будем слушать. 25 - стандартный порт для входящей почты, 465 - порт с принудительным шифрованием без запроса (вторая строчка), 587 - для своих пользователей с авторизацией. 465 порт нужен для старых клиентских приложений.
daemon_smtp_ports = 25 : 465 : 587
tls_on_connect_ports = 465
внутри acl_check_rcpt: пишем правила кому нужно авторизоваться
авторизованные пользователи могут отправлять любые письма
accept authenticated = *
control = submission
на 587 и 465 портах без авторизации почта не принимается
deny message = Authentication is required
condition = ${if eq{$sender_host_authenticated}{}}
condition = ${if eq{$received_port}{587}}
deny message = Authentication is required
condition = ${if eq{$sender_host_authenticated}{}}
condition = ${if eq{$received_port}{465}}
в секции begin authenticators прописываем способы авторизации. пока просто ищем в файле /etc/exim/auths соответсвующую пару логин/пароль
LOGIN:
driver = plaintext
server_set_id = $auth1
server_prompts = <| Username: | Password:
server_condition = ${if eq{${lookup{$auth1}lsearch{/etc/exim/auths}$value}}}{$auth2}}
# для авторизации только в шифрованом канале
server_advertise_condition = ${if def:tls_cipher }
в файле auths пароли пишутся так:
login:password
login2:password2
сегодня какой-то спамер смог обойти авторизацию
вернее смог авторизоваться несуществующим пользователем и забить всю очередь спамом на тайваньские адреса
может кто подскажет как это получилось?
я перепробовал разные настройки в почтовом клиенте - с недействительными логином или паролем не пускает.