Конфигурация почты
Иерархия: | ISPmanager Business -> Почтовые сервисы |
ISPmanager Lite -> Почтовые сервисы |
Содержание
Общее по почте
Почтовые службы в ISPmanager 5 реализуются связкой POP3-сервера dovecot (только 2-й версии) и SMTP-сервера Exim. Все создаваемые через панель почтовые домены и почтовые ящики являются виртуальными и не требуют реальных пользователей в системе. Формат хранения почты - Maildir (http://ru.wikipedia.org/wiki/Maildir). SMTP-авторизация осуществляется через сокет dovecot. Доставка сообщений и учет квот осуществляется средствами dovecot.
Настройка почтовых служб
ISPmanager Lite
ISPmanager Lite предоставляет возможность выбора используемых почтовых служб в разделе "Возможности".
- Exim - SMTP сервер (http://www.exim.org/).
- Dovecot - POP3/IMAP севрер. (http://www.dovecot.org/)
- Greylisting - средство борьбы со спамом, использующее механизм серых списков (http://ru.wikipedia.org/wiki/Серый_список). Для exim будет установлен postgrey.
- DKIM-фильтр - включить поодержку технологии DKIM (http://ru.wikipedia.org/wiki/DomainKeys_Identified_Mail). Будет установлен opendkim.
- фильтр спама SpamAssassin - средство для фильтрации спама (http://ru.wikipedia.org/wiki/SpamAssassin).
- ClamAv - средство проверки входящей почты на вирусы (http://www.clamav.net/)
- AfterLogic - популярный webmail клиент (http://ru.afterlogic.com/).
- RoundCube - популярный webmail клиент (http://roundcube.ru/)
ISPmanager Business
Не предоставляет возможности настройки почтовых служб. Почтовые службы устанавливаются и настраиваются автоматически при назначении узлу кластера роли - почтовый сервер.
Роль почтового севера включает следующие почтовые сервисы: Exim, Dovecot, Postgrey, OpenDKIM, Spamassassin, Sieve, Roundcube, ClamAV.
Общее о Exim
При установке, для настройки почтового сервера используется шаблон конфигурационного файла. Он копируется из etc/templates/exim.config в рабочую директорию exim. В нем есть уже все необходимое для работы.
Подробный разбор шаблона конфигурационного файла в статье - ISPmanager: Конфигурационный файл Exim
Основные файлы
Перечень файлов, используемых в работе панели с почтовым сервером Exim (пути могут быть найдены в конфигурационном файле ISPmanager - etc/ispmgr.conf):
- exim-passwd - файл, где перечислены все почтовые ящики, пути до них, а так же uid/gid реальных пользователей, которым ящики принадлежат, а так же перенаправления почтовых ящиков
- exim-domains - здесь перечислены все почтовые домены, создаваемые панелью, а так же перенаправления для них и действия по умолчанию.
- exim-aliases - здесь перечислены псевдонимы почтовых ящиков
- exim-whitelist - белый список почтового сервера, домены, ip-адреса, ящики, с которых всегда будет приниматься почта
- exim-blacklist - черный список почтового сервера, домены, ip-адреса, ящики, с которых всегда будет отклоняться почта
- exim-domainips - соответствие почтовых доменов и ip-адресов, с которых будет отправляться почта от них
Формат записи действий по умолчанию для доменов
В файле exim-domains:
company.me:company.me::no - "Действие по умолчанию" имеет значение "Сообщение об ошибке" company.me:company.me:/dev/null:no - "Действие по умолчанию" имеет значение "Игнорировать и удалить" company.me:company.me:mary@me.ru:no - "Действие по умолчанию" имеет значение "Перенаправить"
Внимание! Для действий по умолчанию поиск будет проходить только среди имен почтовых ящиков, псевдонимы в поиске участвовать не будут.
Создание ящика
После создания ящика "aaa@test.dom" будут прописаны такие записи в конфигах:
в exim-passwd:
aaa@test.dom:500:500:160:/var/www/user/data/email/test.dom/aaa:no
- aaa@test.dom - имя ящика
- 500:500 - uid:gid пользователя владельца
- 160 - квота в мегабайтах
- /var/www/user/data/email/test.dom/aaa - путь до директории ящика
- no - выключен ли ящик
в exim-aliases:
ccc@test.dom:aaa@test.dom:fwd aaa@test.dom:aaa@test.dom,aaa@test2.dom:user
- ccc@test.dom - псевдоним
- aaa@test2.dom - куда слать копии писем
Общее о Dovecot
Используется dovecot только второй версии. Посредством dovecot осуществляется доставка все писем в maildir'ы ящиков, для чего используется утилита dovecot-lda. Как плагины к dovecot-lda подключаются почтовые квоты и почтовый сортировщик на основе sieve (http://ru.wikipedia.org/wiki/Sieve). Разбор конфигурационных файлов dovecot в статье - ISPmanager: Конфигурационные файлы Dovecot
Основной используемый файл - dovecot-passwd, в нем хранятся все данные о ящике и шифрованные пароли. Для генерации паролей используется утилита - dovecot-doveadm.(пути могут быть найдены в конфигурационном файле ISPmanager - etc/ispmgr.conf)
Создание ящика После создания ящика "aaa@test.dom" будут добавлена запись в dovecot-passwd:
aaa@test.dom:{CRAM-MD5}59e8dc33b05d7e84fb49cf28bc20b7d55a2392631d8e16a9c522b6510692480b:500:500::/var/www/user/data/email/test.dom/aaa:::maildir:~/.maildir userdb_quota_rule=*:bytes=160M
- aaa@test.dom - имя ящика
- {CRAM-MD5}59e8dc33b05d7e84fb49cf28bc20b7d55a2392631d8e16a9c522b6510692480b - пароль, зашифрованный методом CRAM-MD5
- 500:500 - uid/gid пользователя владельца почтового ящика
- /var/www/user/data/email/test.dom/aaa - путь до директории ящика
- maildir:~/.maildir - указывает на формат хранения Maildir
- userdb_quota_rule=*:bytes=160M - значение квоты в 160 мб, учитывается dovecot-lda при доставке
пароль сгенерирован вызовом:
/usr/bin/doveadm pw -s CRAM-MD5 -u aaa@test.dom Enter new password:
Утилита dovecot-lda
Утилита dovecot-lda присутствует в дистрибутиве dovecot. Она прописывается для SMTP-сервером как доставщик почты по умолчанию. После передачи сообщения от SMTP-сервера, dovecot-lda берет данные для доставки из файла dovecot-passwd, делает setuid под пользователя владельца ящика.
Если подключен плагин почтового сортировщика sieve, dovecot-lda смотрит существует ли файл скрипта сортировки sieve (по умолчанию .dovecot.sieve) и запускает его на выполнение.
Почтовые квоты
В <директория ящика>/.maildir/ есть файл maildirsize, какждый раз при доставке письма dovecot-lda прописывает туда размер письма и вычисляет общий размер. Этот общий размер сравнивается с квотой, прописанной в dovecot-passwd, если квота превышена - письмо отклоняется. При удалении почтовый сообщений по протоколу POP3 dovecot так же пересчитывает размер в maidirsize файле с учетом удаленных сообщений
посмотреть использованные квоты ящиков можно утилитой dovecot-doveadm:
/usr/bin/doveadm quota get -A
Автоответчики
В <директория домена>/<имя ящика>/ создается .vacation.db и .vacation.msg В aliases прописывается соответствие почтового ящика и автоответчика.
aaa+test.dom: aaa@test.dom,"|/usr/local/mgr5/sbin/responder -f /home/user/data/email/test.dom/mail/.vacation.db -m /home/user/data/email/test.dom/mail/.vacation.msg"
- .vacation.msg - сообщение автоответчика
- .vacation.db - файл лога кому и во сколько был ответ, отвечает раз в сутки на один адресат.
Грейлистинг
Работа серого списка заключается в намеренной задержке получения писем на некоторое время. При этом адрес и время пересылки заносится в базу данных серого списка. Если удалённый компьютер является настоящим почтовым сервером, то он должен сохранить письмо в очереди и повторять пересылку в течение пяти дней.
Для exim используется Postgrey.
Грейлистинг может быть включен и для почтового домена и для почтового ящика. Если на домене отключен - для его ящиков недоступен грейлистинг, если для домена включен - на его ящиках грейлистинг можно включать/выключать.
Существует так же отдельный белый список для грейлистинга, куда можно добавлять домены, ip-адреса и почтовые ящики.
Postgrey
Все домены и ящики на которых выключен грейлистинг записываются в файл whitelist_recipients, вайт-лист грейлистинга - файл whitelist_clients.
Пути для Linux:
/etc/postgrey/whitelist_clients /etc/postgrey/whitelist_recipients
Формат записи:
whitelist_clients:
example.com 1.2.3.4 aaa.example.com
whitelist_recipients:
test.dom ccc@test.dom
Milter-Greylist
Вайтлист, почтовые домены, ящики с отключенным грейлистингом хранятся в файле greylist-conf (Путь прописан в etc/ispmgr.conf, для Debian - /etc/milter-greylist/greylist.conf)
Формат записи:
- грейлистинг отключен на домене:
racl whitelist rcpt /.*@test.dom/
- грейлистинг отключен на ящике:
racl whitelist rcpt aaa@test.dom
- вайтлист для домена:
racl whitelist domain example.com
- вайтлист для ящика:
racl whitelist from aaa@example.com
- вайтлист для ip-адреса:
racl whitelist addr 1.2.3.4
SpamAssassin
Программа SpamAssasin (SA) позволяет произвести анализ содержимого письма. Добавляются в заголовки письма соответствующие строки, а пользователь, на основе почтовых фильтров в почтовом клиенте, может отфильтровать почту в нужные папки почтовой программы.
SpamAssasin может быть включен и для почтового домена и для почтового ящика. Если на домене отключен - для его ящиков недоступен, если для домена включен - на его ящиках SpamAssasin можно включать/выключать.
Почтовые домены, ящики с отключенной проверкой спама, а так же настройки спамассассина хранятся в файле spamassassin-localcf (Путь прописан в etc/ispmgr.conf, для Debian - /etc/spamassassin/local.cf)
Формат записи:
- Выключен на домене:
all_spam_to *@test.dom
- Выключен на ящике:
all_spam_to aaa@test.dom
Настройки:
- Требуемая оценка (исходя из алгоритмов проверки спама и обученности, SpamAssassin определяет оценку, число от 0 до 100)
required_score 5
- Дописывать в поле "Тема" (Если письмо расценено как спам, что дописать в теме сообщения):
rewrite_header Subject ****SPAM*****
- Тип отчета (как прикладывать отче о спаме):
report_safe 1
- E-Mail для связи (в отчете о спаме):
report_contact aaa@example.com
OpenDkim
Dkim - фильтр добавляет в заголовок письма специальную сигнатуру, с помощью которой можно идентефицировать домен, с которого пришла почта, если в его днс записях есть соответствующая TXT-запись. Для этого для каждого домена создается пара приватный/публичный ключ. Exim начиная с версии 4.7 умеет сам работать с Dkim, тогда opendkim используется только для генерации ключей.
Пути (в etc/ispmgr.conf):
- opendkim-keyspath - директория где хранятся ключи
- opendkim-genkey - утилита генерации ключей
Включение DKIM на домене
После включения DKIM на домене создадутся следующие файлы в директории opendkim-keyspath:
test.dom.private test.dom.txt
Добавится TXT днс запись для доменного имени:
dkim._domainkey IN TXT "v=DKIM1\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDF0zQdEjbWdIkor9Qm9zelAZAUrHJfft7Rmf/dvFXZsllBMUhkZiaP44II2Q2ROJGIUywR3abakw2UWR5loHeIYByh7VqiobUWSz+RGaQrKj9svjXguZGf+YbYwYZGMNxNyWifUg7+XPse+WedRTNkDlt+iMXEBjtOxE3kSOshPwIDAQAB"
Дополнительная информация
Письмо с DKIM не проходит проверку. В заголовках письма
dkim=invalid reason=pubkey_syntax
Проблема в том, что на Centos DKIM не верно генерирует ключ (лишние скобки и пробелы генерируются).
Для решения пробелмы необходимо поправить txt запись для домена и поправить запись в файле /etc/opendkim/keys/test.dom.txt
привести все к виду
cat /etc/opendkim/keys/domain.com.txt
dkim._domainkey IN TXT "v=DKIM1; k=rsa; s=email; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3bFrhfb1ofI3Ix13094HuTPz91i81MHnAqjPbb1boig17/AViH2tWBpOULVK2W5+WYpZEE4Z/x7H4yxIP7B7i7l8LrjXgKXLVtU9dbmjXn4PyVrlyM8E5azDLhArARa+i5Lrtv34waixnO6s9xRgqLeplMfz+r7UmzV3UP52XzQIDAQAB"; ----- DKIM key dkim for domain.com
Clamav
Антивирус кламав используется для проверки входящей почты. Письма с вирусами отклоняются, для проверенных писем добавляется заголовок.
Домены, на которых проверка вирусов отключена записываются в clamav-whitelist (путь в etc/ispmgr.conf, для Debian - /etc/clamav.whitelist)
Запись для отключенного домена в clamav-whitelist:
Для postfix или sendmail:
To:.*@test.dom
Exim работает с clamav без milter-интерфейса и смотрит в clamav-whitelist сам:
test.dom
Особенности установки на Debian 9
На Debian 9 в процессе установки ClamAV присутствует проверка наличия файлов антивирусных баз. Пока антивирусные базы не будут загружены,
clamav-daemon не сможет запуститься, а в журнале установки возможностей панели будет наблюдаться сообщение:
"Clamav databases have not fetched already. Waiting 5 sec"
Данная процедура может длиться не более 20 минут. После успешной загрузки антивирусных баз установка остальных выбранных в панели пакетов будет продолжена.
Если по истечении 20 минут процесс загрузки баз завершился с ошибкой то, возможно, имеются проблемы с сетью. Пожалуйста, проверьте соединение с интернетом.
Sieve
В качестве сортировщика почты используется плагин к dovecot языка филтрации Sieve (http://ru.wikipedia.org/wiki/Sieve)
В дире ящика есть файл .dovecot.sieve, в который включаются файлы скриптов(в каждом одном условия и действия для него) из директории .sieve/ так же в директории ящика.
В каждый скрипт в заголовок добавляется инструкция подключения всех комманд, добаляемых через панель:
require ["fileinto","reject","vacation","regex","envelope","relational","body","copy"]
Пример
Скрипт с именем "testscript" для ящика aaa@test.dom пользователя владельца user, проверяет формулировку: Если в заголовках письма "Header" или "Subject" не найдены подстроки "AAA", "BBB", "ССС" или размер письма больше 1 мегабайта, то переслать письмо ящику bbb@test.dom, а в ящике aaa@test.dom не сохранять.
После создания скрипта сортировки через визард в панели, появятся такое содержимое файлов:
/var/www/user/data/email/test.dom/aaa/.dovecot.sieve:
require ["include"]; include :personal "testscript";
- require - заявляем что используем директиву include для включения скриптов
- include - включаем скрипт testscript
/var/www/user/data/email/test.dom/aaa/.sieve/testscript.sieve:
if anyof ( not header :contains ["Header","Subject"] ["AAA","BBB","CCC"], size :over 1024K ) { redirect "bbb@test.dom"; discard; }
- anyof - любое из условий верно
Первое условие (условия каждое на новой строке через запятую между '(' и ')'):
- not - логическое НЕ
- header - проверяем заголовки письма
- :contains - содержит
- ["Header","Subject"] - проверяем заголовки Header или Subject
- ["AAA","BBB","CCC"] - проверяем, что заголовки содержат "AAA", "BBB" или "ССС"
Второе условие:
- size - проверяем размер письма
- :over - больше
- 1024K - 1 мегабайт
Первое действие (действия каждое на новой строке через запятую точку с запятой между '{' и '}'):
- redirect - перенаправить
- "bbb@test.dom" - на адресс bbb@test.dom
Второе действие:
- discard - удалить (не сохранять в ящике, для которого выполняется скрипт)