Тривиальная задачка — Squid / MySQL / Postfix / Courier-IMAP / ClamAv / SpamAssassin (Linux, О работе) 07.05.2007
Внимание задача:
- Авторизация и учет трафика по каждому пользователю
- Почтовый сервер и почтовые ящики каждому пользователю
- Возможность самостоятельно добавлять пользователей и ящики не обладая специальными навыками
- Разумная стоимость решения
- Возможность масштабирования
- Отсутствие привязки к домену Windows
Внимание решение:
Сервер на базе ОС Linux
- Прокси Squid с авторизацией через базу MySQL
- SMTP-сервер Postfix с хранилищем данных в базе MySQL и администрированием через веб-интерфейс PostfixAdmin
- Фильтрация спама (SpamAssassin) и вирусов (ClamAv)
- IMAP-сервер Courier-IMAP с авторизацией через MySQL базу
- Веб-интерфейс для работы с почтой с функциями Groupware работающий по с сервером по протоколу IMAP
- Инсталляция и настройка всего комплекса обошлась заказчику в 10 т.р. (+ средней мощности персональный компьютер, используемый в качестве сервера)
- Масштабирование ограничено лишь фантазией заказчика и аппаратным обеспечением (Celeron 1,8 Ггц/1024 мб оперативной памяти/80 Ггб свободного пространства на жестком диске – хватило без проблем на 200 пользователей)
В дополнение ко всему сделал импорт таблицы логинов и паролей из файла Excel (база пользователей изначально была создана секретарем в экселе). Сейчас дописываю скрипт веб-интерфейса для управления учетными записями доступа к Интернету через прокси-сервер.
Теперь подробнее о том, как я это сделал.
Установку Squid, MySQL и Courier-IMAP я описывать не буду, т.к. она ничем не отличается от установки любого другого ПО в ОС Linux. Для авторизации пользователей использовался squid helper написаный на C (взять можно здесь).
Postfix обязательно должен быть собран с поддержкой MySQL. В процессе настройки main.cf я использовал следующие конфиги связей с mysql (не забудте изменить пароли и логины MySQL пользователя).
Для осуществления фильтрации почты на спам и вирусы необходимо взять скрипт прописав в нем свои пути к clamav и сокету spamd, и указать его в master.cf следующим образом:
smtp inet n - n - - smtpd -o content_filter=clamassassin
clamassassin unix - n n - - pipe
flags=Rq user=clamav argv=/etc/postfix/clamassassin.sh -f ${sender} -- ${recipient}
Основные тезисы я изложил. Дальше писать сейчас не времени.
Если буду вопросы по описанной мной схеме, буду писать более детальное продолжение...