понедельник, 9 февраля 2009 г.

авторизация smtp в exim

во-первых нужен сертификат, потому как авторизация без 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


сегодня какой-то спамер смог обойти авторизацию

вернее смог авторизоваться несуществующим пользователем и забить всю очередь спамом на тайваньские адреса


может кто подскажет как это получилось?

я перепробовал разные настройки в почтовом клиенте - с недействительными логином или паролем не пускает.