понедельник, 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


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

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


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

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

вторник, 13 января 2009 г.

биллинг psquid

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

теоретически можно прикрутить сбор статистики и сдругих систем учета

работает следующим образом:

- информация о пользователях и трафике хранится в БД

- авторизация в сквиде происходит посредством скрипта, который проверяет логин/пароль/объем потребленного трафика/лимит на текущий период в БД

- сквид пишет информацию о трафике в свой лог

- через cron запускается сборщик, который читает лог сквида и заносит инфу в БД

- этот же сборщик удаляет старые записи в БД, дабы не переполнять базу

- лог сквида периодически (лучше ночью, когда никто не работает) чистится через крон

- управление осуществляется через веб-интерфейс

- пользователи могут через этот же интерфейс посмотреть свою статистику и поменять свой пароль

для установки требуется:

- сервер, поднималось на freebsd, сейчас работает на openbsd

- postrgresql какой-нибудь не древней версии. ничего специфичного для последних версий не используется

- perl должен работать. Заодно надо поставить библиотеку DBD::Pg , дабы иметь возможность работать с БД

- squid версии ниже 2 не тестировались, на 3 все делается идентично

- apache , дабы прикрутить веб-интерфейс