Вход:  Пароль:  
FreeSource: AltLinux/Документация/PostfixCyrusImap ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Документация/PostfixCyrusImap за 2005-12-05 01:06:09..

Настройка почтовой системы Postfix+SASL+Cyrus-imap+Amavisd-new+ +Spamassassin+Clamav+sqlgrey+IMP


Автор: Морсов Алексей (samurai@ricom.ru), 4 Марта 2005г.


UPD: 22 июля 2005г.
UPD: 27 октября 2005г.
UPD: 28 октября 2005г.


Принимаются все вопросы, пожелания, поправки, уточнения, благодарности и прочее по указанному адресу электронной почты.


Примечание:


Данный документ описывает установку и настройку почтовой системы на базе дистрибутива ALT Linux Master 2.4 и предполагает наличие у вас необходимых навыков по работе в Linux.


Все настройки взяты с реально работающего mail-сервера.
В настройке всей этой машинерии мне очень помогли советы членов community@ ALT Linux и вот это HOW-TO.

Содержание

Установка необходимых пакетов
Настройка Postfix
Настройка Cyrus-Imap
Настройка SASL и подготовка cyradm
Управление пользователями
Настройка Amavisd-New, Clamav, SpammAssassin и MySQL
Запуск и проверка
Настройка IMP

Установка необходимых пакетов


И так. Для почтовой системы нам понадобится установить (если они еще не установлены) следующие пакеты в систему:



Внимание: версии пакетов у вас могут отличаться. Так в частности postfix входящий в состав ALT Master 2.4 не поддерживает sasl, поэтому я лично брал postfix-2.1.5-alt0.1.src.rpm от сюда http://lakostis.elektrostal.ru/RPMS/ALM2.4/SRPMS/ (спасибо Konstantin A. Lepikhov).
Уже после написания статьи в бэкпорты к Мастеру (и в самом сизифе) весь postfix был разбит на основной и кучу отдельных модулей. Если у вас что-то из описанного здесь не заводится, проверь установлен ли соответствующий модуль для postfix. Так например для SASL авторизации должен быть установлен пакет postfix-tls. (по замечанию Vladimir V. Kamarzin).



Примечание: sqlgrey не входит в поставку ALT Linux Master 2.4 (и насколько я знаю на момент написания данного текста не входит и в «Сизиф», поэтому я собирал его сам из исходников http://sqlgrey.sourceforge.net/). Этот пакет, собранный для ALT Linux Master 2.4 можно взять у меня http://mail.ricom.ru/alt/srpms/. Нужный для sqlgrey пакет perl-IO-Multiplex, который опять же не входит в ALT Linux Master 2.4, можно взять в «Сизифе".


Для web-интерфейса будем использовать IMP. Для этого понадобятся пакеты:



Содержание


Настройка Postfix


Мы будем настраивать Postfix как сервер smtp с поддержкой авторизации через SASL. Всю почту, которую Postfix будет принимать, он будет отдавать Cyrus-imap по протоколу lmtp. Прежде чем попасть к Cyrus-imap почта будет проходить проверку антивирусами и спамофильтром. При приеме сообщений, Postfix будет проверять их (начиная с этапа HELO/EHLO соединения) с помощью greylisting-технологии, по некоторым online blacklist сервисам и по собственному blacklist, который будет находиться в My SQL? базе. Все пользователи почтовой системы будут виртуальными (т.е. не будут иметь соответствующих unix accounts), за исключением служебных пользователей, типа webmaster, postmaster и т.д.


И так. Сначала нам нужно объявить Postfix внешним сервисом (так как по умолчанию он доставляет только локальную почту):



Теперь отредактируем файл /etc/postfix/master.cf. Фактически включим нужные нам сервисы и фильтры:



Теперь отредактируем файл /etc/postfix/main.cf. Я создал main.cf с нуля, чтобы вписать туда только нужное мне.
Прежде всего настроим наш хост (подробности см. в BASIC_CONFIGURATION_README):



Файл mynetworks содержит список ваших доверенных сетей, например:



Теперь настроим таблицы пользователей, алиасы и транспорт для них:



Теперь настроим SASL аутентификацию для smtp-соединений:



И пропишем правила доступа для smtp-соединений. Сначала попросим «представиться» и корректно формировать заголовки письма. Описания остальных правил (и для чего они именно нужны) можно (и нужно) посмотреть в SMTPD_ACCESS_README.



Примечание: check_policy_service – это механизм проверки, на котором и задействован sqlgrey (в нашем случае). Данный вид сервиса реализован в Postfix версии 2.1 и старше.
check_sender_access – используется для ведения нашего blacklist-а.
У меня он выглядит так:

user и password – это имя пользователя и его пароль в базе My SQL? имеющего доступ к указанной таблице/базе.
content_filter – собственно заставляет письмо уходить не сразу в ящик пользователя, а уходит на растерзание amivisd-new, который проверяет его сам, а так же с помощью clamav (на вирусы) и spamassassin (спамофильтр), только после чего возвращает письмо обратно Postfix и оно наконец попадает в ящик пользователя.
Так... Поскольку мы используем SASL авторизацию для smtp – нужно указать где ее (и как) брать. Для этого найдем файл /usr/lib/sasl2/smtpd.conf (если такого файла нет, просто создайте его там) и пропишем в нем следующее:



А теперь перейдем к Cyrus-Imap.


Содержание


Настройка Cyrus-Imap


Ну что же, с postfix пока закончим. Приступим теперь к настройке собственно Cyrus-Imap – нашего pop3 и imap демона :) Выбор именно Cyrus-а был основан на трех простых вещах:


  1. Он поставился из коробки ALT Linux Master 2.4 по умолчанию :)
  2. Он имеет более мощные возможности в принципе (хотя я думаю что я использую его дай бог на 10%
  3. Он не так уж сложен в настройке (по крайней мере в настройке как простого pop3/imap)

Это мое субъективное мнение.
И так приступим. Для начала отредактируем файл /etc/cyrus.conf:



Внимание: Обратите внимание на строку с lmtpunix. Путь, указанный в ней, должен совпадать с путем, указанным в /etc/postfix/main.cf с учетом того, что Postfix завернут в chroot-jail (в данном случае в директорию /var/spool/postfix).


Теперь внесем небольшие изменения в файл /etc/imapd.conf:



partition-default указывает на тот каталог, где будет храниться ваша почта. У меня это /var/maildir – которая суть отдельный раздел с файловой системой Reiser FS? (так как почта в Cyrus-Imap хранится в формате Maildir, то мне показалось это оптимальным вариантом).
ВНИМАНИЕ: – пользователь cyrus должен иметь права на чтение и запись в этот каталог!
Все. Остальное там можно оставить как есть. Есть там еще параметры для автосоздания ящиков в cyrus при первом обращении к нему, но я это не использовал по одной простой причине, которую я объясню ниже, в разделе Управление пользователями.


Содержание


Настройка SASL и подготовка cyradm


Теперь проведен настройку SASL библиотеки и подготовим cyradm к работе. Тут все просто. Редактируем файл /etc/sasl2/saslpasswd.conf:



Собственно с SASL на этом все. Вот если бы мы делали через mysql.... Но это совсем другая история :) И довольно хорошо описанная в этом вот HOW-TO.
Теперь перейдем к подготовке cyramd. Cyramd это интерфейс в базе Cyrus-Imap. Через него можно управлять ящиками пользователей (создавать, удалять, устанавливать права, создавать папки и т.д.). Собственно, единственное что нам понадобится, это завести в базу SASL пользователя cyrus, которого мы указали в качестве Cyrus администратор в /etc/imapd.conf. Если вы указали там другого, соответственно нужно добавить в базу SASL вместо cyrus. Использовать root для этого не рекомендуется.



И укажите пароль когда вас попросят. А теперь внесите пользователей cyrus и postfix в группу sasl, чтобы они могли читать базу SASL.
Однако, как мы помним, Postfix запущен в chroot-jail, т.е. он будет искать базу SASL /etc/sasl2/sasldb2 но не увидит ее. Поэтому надо ее скопировать к нему в chroot. Идем в /var/spool/postfix/etc/ создаем там директорию sasl2. И главное, убедимся что у файла /etc/sasl2/sasldb2 правильные права (группа sasl должна уметь его читать):



Содержание


Управление пользователями


Поскольку все наши пользователи виртуальные, и сведения о них находятся в файлах типа hash (см. файл /etc/postfix/main.cf, то нам нужно добавлять и удалять их от туда, не забывая при этом добавлять или удалять их из базы SASL. Это можно делать руками, но я написал небольшой скрипт, который автоматически выполняет эти действия и заводит ящики в Cyrus-Imap для этих пользователей.
Возможно это не самый гибкий подход, но для небольшой конторы он себя вполне оправдывает как наиболее простой в настройке. В будущем, при желании можно отказаться от hash и перейти к использованию в качестве базы данных пользователей My SQL?, Postgre SQL? или даже LDAP :)


Внимание: Мой скрипт читает файлы имен пользователей и их алиасов по жестким регулярным выражениям, попутно сортирую их по алфавиту. Так что если у вас уже есть эти файлы (см. /etc/postfix/main.cf) то лучше просто удалите их (или переименуйте) – он сам создаст их.


Его можно взять ((http://mail.ricom.ru/alt/ тут). Только имейте ввиду, что пароль для пользователя cyrus там прописан в чистом виде. Соответственно права на этот файл должны быть даны только root.
И так, используем скрипт mailmgr для добавления пользователя.



Скрипт создаст ящик в Cyrus-Imap, даст пользователю cyrus права на его удаление, добавит пользователя в базу SASL (попросит ввести пароль), добавит имя пользователя в файл пользователей почтовой системы. После этого скрипт запросит алиас для пользователя. Если вы не хотите давать алиас, просто нажмите ENTER. Скрипт не умеет добавлять алиасы отдельно от имен пользователей, соответственно, если вы захотите добавить алиас в будущем, просто отредактируйте соответствующий файл.
Справку по использованию скрипта mailmgr можно получить командой



Содержание


Настройка Amavisd-New, Clamav, Spamm Assassin? и My SQL?


Собственно настраивать тут особо нечего. Как говорилось «Всё уже украдено до нас» :) Спасибо создателям Amavisd-new и команде ALT Linux. Но все же, сначала в файле /etc/amavis/amavisd.conf найдите и исправьте следующие строки:



это приведет к тому, что все письма опознанные как спам и вирусы, будут складываться в каталог карантина ( он указан тут же в переменной $QUARANTINEDIR). Мне кажется это наилучший способ. Сразу удалять такие письма не хорошо, потому что и Spam Assassin и Clamav могут ошибиться и вы потеряете нужную почту.


Обновление от 21.04.2005
Когда мне надоело забивать адреса хостов спамеров свалившихся в карантин ручками, я написал небольшой скриптик (заодно на Python потренировался) который разгребает заголовки всех писем в этой директории и закидывает их в My SQL?-евский блеклист, который использует Postfix :) Желающие могут им воспользоваться. Лежит здесь, называется autospambann (там лежит rpm для ALT Master 2.4 и src.rpm). Скрипт записывает в лог все заголовки письма которое он внес в blacklist и удалил. Но на ваш страх и риск – письма удаляются после обработки. Хотя можете поправить в скриптике – там прозрачно.


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



И еще, если вам необходимо посылать/получать по почте письма с файлами типа. EXE (например самораспаковывающиеся архивы или дистрибутивы), то найдите и законментируйте секцию, начинающуюся строкой $banned_filename_re = new_RE(


Ну и теперь настроим My SQL? – наш собственный blacklist. Для этого сначала подправим файл /var/lib/mysql/my.cnf:



Теперь сделайте таблицу нужную для Postfix. Возьмите файл postfix.sql от http://mail.ricom.ru/alt/? и просто подгрузите его командой


А теперь дадим пользователю postfix права на операции с этой базой:



В принципе Postfix-у нужно только доступ на чтение, но поскольку My SQL? у нас работает только на локальном интерфейсе, то можно и дать все права. А уж если вы собираетесь использовать autospambann – то права на INSERT тоже должны быть.


Ну вот, теперь все вроде бы настроено и прописано. Осталось все это запустить и проверить.


Содержание


Запуск и проверка


И так, чтобы вся эта машинерия работала, нужно всех их перезапускать. И так:



Проверяем, работает ли почта. Если все работает, убедимся что все указанные сервисы будут стартовать при загрузке системы:



Должны быть видны следующие записи:



clamd стартуется из под amavid. Если у вас какого-то из процессов не хватает, сделайте для него:



Все. Все красиво, все хорошо. Осталось только прикрутить Web-интерфейс ко всему этому хозяйству.


Содержание


Настройка IMP


IMP ставится в директорию к Apache /var/www/html/addon-modules/horde/imp/. Сам IMP реализован под Horde. После установки доступ к директориям horde/ и horde/imp/ дан только для локального хоста. Откроем дуступ к этим папкам извне. Для этого найдем в этих директориях файлы .htaccess (или создайте их с правами 640 и владельцами root.apache) и пропишите в них следующее:



После этого, отредактируем файл /etc/httpd/conf/httpd.conf, в самом конце которого должны быть строчки



Теперь убедимся, что в файле /etc/httpd/conf/addon-modules/horde.conf есть такие строки:



и в файле /etc/httpd/conf/addon-modules/imp.conf такие:



Теперь перезапустим сервер Apache:



и убедимся что он у нас стартует при загрузке



Теперь осталось только настроить сам IMP. Сначала в файле horde/config/registry.php раскоментируйте строки



а в блоке начинающемся с $this->applications['imp'] = array( исправте строку



Теперь в файле horde/imp/config/servers.php отредактируйте второй описанный сервер



Ну вот и все. :) Проверяем, тестируем, наслаждаемся :)

Ссылки


http://ru.gentoo-wiki.com/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D0%BE%D1%87%D1%82%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B
http://cyrus.org.ru/altnamespace.html#altnameconfig


Страницы, ссылающиеся на данную: SamuraiWithin
Документация/Postfix


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]