Конфигурация почты

Материал из ISPWiki
Перейти к: навигация, поиск

Общее по почте

Почтовые службы в ISPmanager 5 реализуются связкой POP3-сервера dovecot (только 2-й версии) и SMTP-сервера Exim. Все создаваемые через панель почтовые домены и почтовые ящики являются виртуальными и не требуют реальных пользователей в системе. Формат хранения почты - Maildir (http://ru.wikipedia.org/wiki/Maildir). SMTP-авторизация осуществляется через сокет dovecot. Доставка сообщений и учет квот осуществляется средствами dovecot.

Настройка почтовых служб

ISPmanager Lite

ISPmanager Lite предоставляет возможность выбора используемых почтовых служб в разделе "Возможности".


Maillite-features.png


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

Программа SpamAssassin (SA) позволяет произвести анализ содержимого письма. Добавляются в заголовки письма соответствующие строки, а пользователь, на основе почтовых фильтров в почтовом клиенте, может отфильтровать почту в нужные папки почтовой программы.

SpamAssassin может быть включен и для почтового домена и для почтового ящика. Если на домене отключен - для его ящиков недоступен, если для домена включен - на его ящиках SpamAssassin можно включать/выключать.

Почтовые домены, ящики с отключенной проверкой спама, а так же настройки SpamAssassin хранятся в файле 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

Как генерируется ключ DKIM в панели

Генкрация ключа происходит командой:

/bin/sh -c /usr/sbin/opendkim-genkey\ -D\ /etc/exim/ssl\ -d\ domain.com\ -s\ dkim\ -r

Данная команда выполняется из-под пользователя exim. Для диагностики проблемы с генерацией ключа необходимо: 1 Активировать данного пользователя 2 Зайти под него 3 Выполнить вышеприведенную команду

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 - удалить (не сохранять в ящике, для которого выполняется скрипт)