понедельник, 22 сентября 2008 г.

Настройка почтовой системы на базе Postfix

Уфф. Сегодня от vvk@ пришло предложение – стоп, сейчас уже более 12... значит вчера :) – предложение зафиксировать наши знания по postfix на wiki. Я так подумал, и решил что действительно не помешало бы. Так как мне надо от чего-то отталкиваться, то расскажу про свою конфигурацию, почему она такая, и какой я хочу видеть свою сеть, чтобы не превратить статью в простой справочник.


Перевод postconf
самый хороший справочник по postfix – man 5 postconf. Осталось его только перевести и добавить к командам пояснения, что такое sasl, smtp протокол, xforward, чем helo отличается от ehlo. Кто займётся переводом? :)2
В принципе я уже начал, только так как я английский понимаю, но не могу внятно сказать это по-русски, то могут быть неточности. см /Документация/Postfix/postconf.


Для начала я опишу свою общую конфигурацию.

Background

Есть локальная сеть – она полностью мне подконтрольна, насколько это возможно при условии работы на машинах других людей. То есть сетевую активность машин я контролировать могу, что установлено на них тоже, но контроль не абсолютный – то есть если они подхватят вирус, я могу его заметить только при активности выше стандартной для этого пользователя – количество ошибок проверяет nagios, и если они будут укладываться в выделенный предел я могу и прошляпить. Если конечно у меня ничего не зачешется в заднице и я не пойду не поду не полюбопытствую, а что творится у такого-то пользователя :) В общем локальной сети доверие выше, чем кому либо другому, но не всё-таки абсолютное.


Есть моя машина. Ей доверие поболе, чем моим пользователям. Но это только на время тестов доверия, так как удобнее быть простым пользователем – быстрее замечаешь неполадки.


Есть два backup mx хоста. Один мой, другой моего знакомого. То есть доверие им обоим высокое, но управлять я могу только своим.

Задачи:

  1. Пользователи должны работать с почтой независимо от их нахождения. Так как доверия инету в общем нет, то значит нужен ssl (шифрование, сертификаты) и sasl – пароли, если уж пользователь не имеет сертификата.
  2. Подход в локальной сети более либерален чем к интернет-пользователям. Например один пользователь любит outlook, другой the bat. Thunderbird используют только те, кого пришлось учить пользоваться почтой мне. Outlook, например, имеет одну проблему – поле helo у него является netbios именем машины (при dhcp доступе в сеть), то есть не имеет полного DNS-адреса. Значит им нужны отдельные правила.
  3. С почтой работать они должны всеми возможными способами – imap, pop3, web. Потому что мне это интересно :)
  4. Так как трафик платный, backup mx должен фильтровать почту сам, до фильтров головного smtp сервера. => общая база фильтров.
  5. проверка на вирусы, spamfilters. Более того, результаты spamassassina должны фиксироваться в общей базе, чтобы ни один mx более не пропускал это письмо, так как spamassassin имеет одну проблему – он целиком получает письмо, анализирует, а потом идентифицирует. То есть кушается трафик, что для меня критично. => нужен скрипт, что после работы assassina обновит базу фильтров.

В итоге получаем связку:
postfix+sasl+courier-imap+ldap+open-xchange+spamassassin+clamav+handsmake scripting

Кто для чего и почему

  • postfix – smtp сервер. Почему именно postfix – если б был скажем exim, то это была бы уже документация по exim'у :)
  • sasl – нужен для smtp auth аутентификации в postfix. Может ходить в kerberos. Может в authdaemon от courier, но это наверное потребует отдельного патча – пока доки не нашёл.
  • courier-imap – pop3/imap сервер. Выбран по одной простой причине – я его когда-то уже завдил, пусть это было с нечаянно. Мне нужен был pop3 доступ к почте системного аккаунта, а courier завёлся как-то сам.
  • ldap – база аутентификационой информации. Выбран потому, что он по сути для этого создавался. Задачи, которые решает ldap – быстрый поиск и древовидное хранение структурированных редко изменяющихся данных, чего с лихвой хватает для аутентификации. BD для этого всё таки не совсем подходит, разве что как backend для ldap-интерфейса. Пришлось изучать с нуля, на что у меня ушло около 2-х недель, что было как-то даже обидно :) Думаю нарисовать ещё и Что Такое LDAP?, где и отведу душу :)1
  • open-xchange – Groupware web сервер. По этой технологии вообще отдельная история, изначально ставился дабы не доапустить повления у меня в сети sharepoint с IIS. Имеет webmail интерфейс. Научив его ходить ldap за моими аккаунтами – точнее всех остальных за его :) – я автоматом получил web интерейс к почте. — Кстати, отдльное спасибо V. Littiev'у за его поддержку в sisyphus'е: сам я его так и не завёл, а через apt-get он встал как-то сам.
  • spamassassin – убийца спама :) Сейчас определяет 19 из 20 писем минимум. Выбран был потому, что я о нём слышал, да и рецепт, что я читал по установке связки postfix+courier+antispam+antivirus был с ним.
  • clamav – антивирь. Был взят из рецепта :) Думаю ещё и drweb прикрутить – тут не ms, дай бог не подерутся :)
  • handsmake scriptng – оттуда же. Мне почему-то не понравилfсь bltz изучать ещё одну сущность под именем amavis. Выбрал путь из рецепта – нарисовать простой скрипт-связку между spamassassin и clamav. Вызывается скрипт через pipe в master.cf (man 8 pipe). Сейчас потихоньку изменился – стал высылать мне новые вирусы и в тему писать их название. Думаю заменить дальше – пусть высылет ещё и описание новых вирусов из http://viruslist.com/ru :)

Так, дока, по которое я всё это дело рисовал в самом начале – оттуда были взяты ldap схема, этот самый скрипт, строки в master.cf – короче всё, до чего могла дотянуться моя мыша :): http://www.opennet.ru/base/net/postfix_openldap.txt.html. Сейчас от этой схемы остались только коментарии, но путь был проложен.


Хм. А вот скрипт-обвязку я там не нашёл. Где ж его откопал-то...

Скрещивание


Теперь как я вообще всё это завёл.

Postfix и Courier

Ну, как всегда, опишем что нам от них обоих вообще надо. Рецепты смотрите на том же opennet'е (http://www.opennet.ru/base/net/postfix_openldap.txt.html), либо /Software / Postfix.


Наша задача по сути заключается в том, чтобы заставить их обоих по имени пользователя брать одну и ту же необходимую им информацию: путь к ящику, права на ящик, пароль. Всё. И конечно брать из одного и того же места :)


Какие есть способы:

  • pam. Они оба прекрасно работают через pam, а так как он, родимый, может очень много, то через него courier и postfix можно заставить ходить куда угодно: в ldap, mysql, active directory :) Одно но: оттуда они могут получить пароль, uid/gid, домашний каталог. А вот каталог с почтой будет иметь название по умолчанию. В postfix это $home_mailbox, в courier $MAILDIRPATH, который, кстати, ну просто никак не обрабатывается в /etc/init.d скриптах. Приходится постоянно учить, благо это уж очень просто :)
  • базы данных. Ну с этим как-нибудь без меня опишите :)
  • ldap. Вот его я и реализовал.

Postfix

Доставка почты (final destination)

final destination — конечный пункт в цепоке smtp серверов 3, сервер, на котором и находятся ящики пользователей, откуда они берут почту через POP3/IMAP протоколы.


Наша задача научить postfix доставлять почту в ящик пользователя — в файл, либо каталог. Так как postfix весь построен на транспортах, то на этом этапе ему надо сказать, какие адреса будут локальными (либо виртуальными) и указать транспорт для этого класса.


to be continued как только будет время и желание.


1 как отметил /Vitaly Lipatov, «Вообще-то есть /ALTLinux/Документация/OpenLDAP". Прогулявшись по ссылке я понял, что это больше рецепт. Там не раскрыты мучавшие меня в самом начале вопросы, что такое схема, обьекты, атрибуты, принципы acl. На всё, конечно, есть ответ в документации, но её ещё надо понять :) Вот, есть желание опубликовать базовые знания *ldap*. Так сказать – отвдечённо от практики, но на её примерах – вот, примеры уже приготовили, так что даже писать не надо будет :)


gns: все давно написано http://www.samba.org.ua/articles/?section=1&articleid=26 ;)


2 как было отмечено в примечании:

Проект по переводу документации postfix на русский: http://www.elantech.ru/docs/postfix-docs-ru/
— Vladimir Kamarzin (2005–10–12 15:29:25)

источник
Отправить комментарий

Неактивный атрибут "скрытый" или как снять атрибут скрытый после вируса

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