Встроенные средства exim
Exim позволяет настроить списки разрешённых и запрещённых отправителей.
Список разрешённых отправителей
Чтобы добавить отправителя в список разрешённых:
- Перейдите в Защита от спама → Белый список → Создать.
- Укажите IP-адрес, адрес электронной почты или доменное имя в поле Отправитель. Если указано доменное имя, то будут разрешены все почтовые ящики на этом домене.
- Нажмите Ok.
Белый список хранится в /etc/<директория exim>/whitelist.
Список запрещённых отправителей
Чтобы добавить отправителя в список запрещённых и его письма всегда отклонялись:
- Перейдите в Защита от спама → Чёрный список → Создать.
- Укажите IP-адрес, адрес электронной почты или доменное имя в поле Отправитель. Если указано доменное имя, то будут запрещены все почтовые ящики на этом домене.
- Нажмите Ok.
Чёрный список хранится в /etc/<директория exim>/blacklist.
DNSBL
DNSBL (DNS blacklist) — списки доменов и IP-адресов, которые, как правило, используются для борьбы со спамом. Exim проверяет наличие почтового домена, с которого отправлено письмо в DNSBL-списках. Если почтовый домен присутствует в списках, то письмо отклоняется.
Чтобы добавить DNSBL-список:
- Перейдите в Защита от спама → Список DNSBL → Создать.
- Укажите в поле Домен DNSBL адрес чёрного списка.
- Нажмите Ok.
Рекомендуем чёрные списки:
Список добавленных DNSBL хранится в /etc/<директория exim>/dnsbllist.
Настройка SpamAssassin
Редактируем файл /etc/default/spamassassin:
#ENABLED=1
CRON=1
Дополнительную настройку и работу с белыми/черными списками можно выполнить через Webmin или добавлением директив в файл конфигурации /var/mail/vmail/.spamassassin/user_prefs
whitelist_from user@domain.com
blacklist_from *@domain.com
Создать директорию и назначить владельца — vexim:
mkdir /var/mail/vmail/.spamassassin
Проверить настройки групп (файл /etc/group), чтобы все наши почтовые сервисы были в группе mail:
mail:x:8:dovecot,clamav,Debian-exim,www-data,mail
Debian-exim:x:113:clamav
clamav:x:116:Debian-exim
Перезапустить службы:
/etc/init.d/exim4 restart
/etc/init.d/dovecot restart
/etc/init.d/spamassassin restart
/etc/init.d/clamav-daemon restart
/var/spool/exim4/scan – настроить право записи для группы mail
Настройка Apache:
добавляем алиас для нашего хоста: /vexim > /var/www/vexim2-master/vexim (можно сделать через Webmin).
Проверяем работу: https://IPv4-address/vexim/. После успешной авторизации создать новые домены и почтовые ящики. В каталоге /var/mail/vmail/ должна появиться новая структура. Если этот каталог остался пустым — проверять права доступа и создавать домены заново.
Отправляем тестовое сообщение и смотрим логи на предмет ошибок.
Дополнительные команды:
Проверка SSL: openssl s_client -connect mail.example.com:pop3s
Выполнить обработку очереди: exim -qf
Очистка очереди: exipick -i | xargs exim -Mrm
Настройка Outlook: при первом подключении к серверу появится окно «Предупреждение безопасности». Нажать кнопку «Показать сертификат», установить.
NB! Могут возникнуть трудности с настройкой MS Outlook 2003 SP1: не подхватывает сертификат. При подключении к серверу дает ошибку 0x800CCC0F. Требуется ручная установка и настройка.
Если включить функцию пересылки сообщений для почтового ящика и указать ящик Гугл, то последний будет блокировать пересылаемые сообщения из-за проверки DKIM. Хотя прямая отправка писем на Гугл прекрасно работает. Помним и на Гугл не пересылаем.
Ручная настройка EFA
Мы же пошли сложным путем, но более гибким. Настройку EFA под себя делали не через интерактивное меню, а правили конфигурационные файлы. Мы хотели не просто всё настроить, а еще и разобраться во всех компонентах и понять, что и как работает.
Первым делом в файле main.cf настроек postfix добавили mynetworks, с которых принимались соединения по SMTP. Затем прописали ограничения по helo запросам, отправителям, получателям, и указали пути к картам с политиками ACCEPT или REJECT при соблюдении определенных условий. Также, inet_protocols был изменен на ipv4, чтобы исключить соединения по ipv6.
Затем изменили политику Spam Actions на Store в конфигурационном файле /etc/MailScanner/MailScanner.conf. Это значит, что если письмо будет определено как спам, оно уйдет в карантин. Это помогает дополнительно обучать SpamAssassin.
После таких настроек мы столкнулись с первой проблемой. На нас обрушились тысячи писем от адресатов you@example.com, fail2ban@example.com, root@localhost.localdomain и т.д. Получатели были схожие. Также получили письма, отправленные MAILER-DAEMON, то есть фактически без отправителя.
В итоге получили забитую очередь без возможности найти среди «красного полотна» нормальные, письма не-спам. Решили делать REJECT подобных писем, используя стандартный функционал Postfix карт: helo_access, recipient_access, sender_access. Теперь вредные адресаты и подобные стали успешно REJECT’иться. А те письма, которые отправлялись MAILER-DAEMON отфильтровываются по helo запросам.
Когда очередь вычистили, а наши нервы успокоились, начали настраивать SpamAssassin.
Через веб-интерфейс
Первый способ — через веб-интерфейс MailWatch. В каждом письме можно увидеть заголовки, тело, а также оценку по алгоритму Байеса и других показателях. Выглядит это так:
Score | Matching Rule | Description |
---|---|---|
-0.02 | AWL | Adjusted score from AWL reputation of From: address |
0.80 | BAYES_50 | Bayes spam probability is 40 to 60% |
0.90 | DKIM_ADSP_NXDOMAIN | No valid author signature and domain not in DNS |
0.00 | HTML_MESSAGE | HTML included in message |
1.00 | KAM_LAZY_DOMAIN_SECURITY | Sending domain does not have any anti-forgery methods |
0.00 | NO_DNS_FOR_FROM | Envelope sender has no MX or A DNS records |
0.79 | RDNS_NONE | Delivered to internal network by a host with no rDNS |
2.00 | TO_NO_BRKTS_HTML_IMG | To: lacks brackets and HTML and one image |
0.00 | WEIRD_PORT | Uses non-standard port number for HTTP |
Открыв письмо, можно поставить галку в чекбоксе «SA Learn» и выбрать одно из нескольких действий:
- As Ham — пометить письмо как чистое (тренировка алгоритма Байеса);
- As Spam — пометить письмо как спам (тренировка алгоритма Байеса);
- Forget — пропустить письмо;
- As Spam+Report — пометить письмо как спам и отправить информацию о нём в сети по обнаружению спама (razor + pyzor);
- As Ham+Revoke — пометить письмо как чистое и отправить информацию о нём в сети по обнаружению спама (razor + pyzor).
Через консоль
Делается это просто. Команда выглядит следующим образом:
В этой команде письмо с ID: 0DC5B48D4.A739D, которое находится в архиве спам писем за определенную дату /20170224/spam/, помечается как чистое (не спам) .
Бытует мнение, что достаточно обучать SpamAssassin только для эффективной фильтрации почты. Мы решили тренировать SpamAssassin, скармливая ему абсолютно все письма, как чистые, так и спам. В дополнение, мы нашли базу спам-писем и отдали SA на растерзание.
Такая тренировка помогла более точно откалибровать Байесовский алгоритм. В результате фильтрация происходит гораздо эффективнее. Такие тренировки мы проводим тогда, когда почтовый трафик не очень высок, чтобы успеть проанализировать и захватить максимальное количество писем.
Для того, чтобы SpamAssassin начал работать на полную мощность, на старте ему необходимо скормить около 1000 различных писем. Поэтому наберитесь терпения и приступайте к тренировке.
Пока еще рано говорить о полной победе над спамом. Однако, сейчас количество жалоб на спам с наших серверов равно нулю. Более детально рассказывать о самом процессе обучения сейчас не будем— не хочется раскрывать все фишки. Хотя, если поковыряться в настройках, разобраться не сложно.
P.S.: Эта статья не является панацеей. Мы просто решили поделиться с вами одним из наших методов борьбы со спамом.
Создание сертификатов SSL
Сертификаты SSL используются для шифрования передачи почты, что хорошо для защиты от несанкционированного чтения почты.
openssl dhparam -out /etc/exim4/dhparam.pem 4096
cd /etc/ssl && openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 100000 -subj ‘/O=Some Org/CN=mail.example.com’
Для других почтовых доменов указываем другое имя файла вместо smtpd.pem, например, mail.example.com.pem.
Права доступа к сертификату: 0440 (только чтение для владельца рут и группы мейл).
Примечание.
Недостаток самоподписанных сертификатов — их нельзя импортировать в аккаунт Гугл, чтобы Гугл забирал почту с нашего ящика. С некоторого момента времени Гугл доверяет только центрам сертификации, например, таким как Mozilla CA. Поэтому или покупаем сертификат, или не паримся с Гуглом, т.к. самоподписанные сертификаты прекрасно работают как на ПК, так и на мобильных устройствах (Android — проверено).
Настройка Dovecot
Пример файлов конфигурации Dovecot.
В файле dovecot.conf следует обратить внимание на строки:
service auth {
unix_listener auth-client {
mode = 0600
user = Debian-exim
}
unix_listener auth-master {
mode = 0600
user = Debian-exim
}
user = root
}
service pop3-login {
chroot = login
process_limit = 200
process_min_avail = 3
service_count = 1
vsz_limit = 64 M
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
postmaster_address = postmaster@example.com
auth_socket_path = /var/run/dovecot/auth-master
}
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
passdb {
driver = pam
}
userdb {
args = blocking=yes
driver = passwd
}
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
##!include conf.d/*.conf
##!include_try local.conf
С помощью local_name{} задаются разные сертификаты для нескольких доменов.
В файле dovecot-sql.conf.ext отредактировать строки:
driver = mysql
connect = host=/var/run/mysqld/mysqld.sock user=mail_user password=CHANGE dbname=vexim
default_pass_scheme = SHA512-CRYPT
password_query = SELECT crypt AS password, ‘/var/mail/vmail/%d/%n’ AS userdb_home, ‘mail’ AS userdb_uid, ‘mail’ AS userdb_gid FROM users WHERE username = ‘%n@%d’ AND enabled = ‘1’
user_query = SELECT pop AS home, uid AS uid, gid AS gid FROM users WHERE username = ‘%n@%d’
Примечание: в файле конфигурации Dovecot по умолчанию подключаются дополнительные настройки в директории conf.d.
Популярные opensource-решения против спама
Rspamd
Он подходит для систем различного масштаба. Умеет интегрироваться в различные MTA (в документации описаны Exim, Postfix, Sendmail и Haraka) или работать в режиме SMTP-прокси.
Система оценки сообщений такая же, как в SpamAssassin, в частности на основании разных факторов: регулярных выражений, блок-листов DNS, белых, серых, черных списков, SPF, DKIM, статистики, хешей (fuzzy hashes) и прочего — только в работе используются другие алгоритмы.
В Rspamd поддерживается расширение при помощи плагинов.
Apache SpamAssassin
Известность SA получил благодаря использованию технологии байесовской фильтрации. Каждое сообщение при прохождении тестов получает определенный балл и при достижении порога помещается в спам.
Легко интегрируется практически с любым почтовым сервисом. В SA доступны популярные технологии, которые подключаются как плагины: DNSBL, SPF, DKIM, URIBL, SURBL, PSBL, Razor, RelayCountry, автоматическое ведение белого списка (AWL) и другие.
Установка в общем не сложна. После установки SpamAssassin требует тонкой настройки параметров и обучения на спам-письмах.
ASSP
Платформно-зависимый SMTP-прокси-сервер, принимающий сообщения до MTA и анализирующий его на спам.
Поддерживаются все популярные технологии: белые и серые списки, байесовский фильтр, DNSBL, DNSWL, URIBL, SPF, DKIM, SRS, проверка на вирусы (с ClamAV), блокировка или замена вложений и многое другое. Обнаруживается кодированный MIME-спам и картинки (при помощи Tesseract). Возможности расширяются при помощи модулей.
Документация проекта не всегда внятная, а инструкции нередко уже устаревшие, но при наличии некоторого опыта разобраться можно.
MailScanner
MailScanner легко интегрируется с любым МТА, в поставке есть готовые конфигурационные файлы. Помимо собственных наработок, он может использовать сторонние решения. Для проверки на спам может использоваться SpamAssassin.
EFA-project
В EFA входят такие компоненты:
В качестве MTA (mail transfer agent) выступает Postfix — надежный, быстрый, проверенный годами;
Ядро спам фильтра — MailScanner — плечом к плечу с антивирусом принимают на себя весь удар;
Спам фильтр — SpamAssassin — определяет письма-спам. В основу включено множество оценочных систем, MTA и наборы регулярных выражений;ClamAV — антивирус, который работает с MailScanner;MailWatch — удобный веб-интерфейс для работы с MailScanner и другими приложениями;
Фильтр контента — DCC — определяет массовую рассылку через отправку хеш-сумм тела писем на специальный сервер, который в свою очередь предоставляет ответ в виде числа полученных хешей. Если число превышает порог score=6, письмо считается спамом;Pyzor и Razor — помогают SpamAssassin точнее распознавать спам, используя сети по обнаружению спама;
Для grey-листинга используется SQLgrey — служба политики postfix, позволяющая снизить количество спама, которое может быть принято получателями;
Для распознавания изображений используется модуль ImageCeberus — определяет порно изображения и т.д.
Мы выбрали EFA, поскольку проект включает в себя все лучшие характеристики вышеперечисленных. К тому же наши администраторы уже имели некоторый опыт работы с ним, поэтому выбор остановили именно на EFA. Приступим к описанию установки.
Организация почтовой базы данных
Здесь я понимаю под словом «база данных» именно хранилище учетных данных пользователей (почтовых ящиков),
а не то что Вы могли подумать. Я не рекомендую использовать реляционную СУБД (MySQL, PostgreSQL), если
число ящиков не превышает значение 400-500. Реляционная СУБД — это всегда тяжелое приложение,
которое «жрет» память и терроризирует дисковую подсистему. Каждый отдельный процесс exim создает
отдельное подключение к БД, что на первых порах (когда этих процессов работает не больше 5-6 одновременно)
никак заметно не сказывается на работе системы в целом; но когда поток почты становится интенсивнее,
сервер начинает заметно тормозить, требуя тонкого тюнинга СУБД. Этот тюнинг однозначно нужен при высокой
нагрузке, и всегда требует правильной организации самих данных в базе. На маленьком сервере это просто
абсурд, а на большом — производственная необходимость. Лучше начать с простой базы данных в /etc/passwd
или CDB, чтобы потом была возможность спроектировать реляционную БД с нуля.
В данной статье я описываю настройку exim на хранение учетных данных в /etc/passwd. Также, я предлагаю
при нескольких почтовых доменах выбрать один основной, а остальные (которые в этом случае будут виртуальными)
маршрутизировать на основной с помощью алиасов. Например, наш основной домен — mydomain.ru, в котором
есть ящики info@mydomain.ru и sales@mydomain.ru. Теперь требуется сделать домен workdom.ru с ящиками
info@workdom.ru и admin@workdom.ru. Поскольку домены хранить в /etc/passwd нереально (на группу и
пользователя там ограничение в 16 символов), то пусть адрес info@workdom.ru будет ссылкой на
info.wd.ru@mydomain.ru, а admin@workdom.ru соответственно ссылкой на admin.wd.ru@mydomain.ru. Это абсолютно
нормальный рабочий способ организации виртуального почтового хостинга для небольшого числа вручную
администрируемых ящиков. Конечно, при большом количестве ящиков полюбому придется сварганить что-то
универсальное, но эти ситуации уже выходят за пределы предметной области данной статьи.
Сервис POP3
Почему именно tpop3d, а не, скажем, popa3d (в порядке убывания важности):
- Можно прикручивать свою собственную схему авторизации с помощью perl-скриптов
- Очень легко реализуется мульти-доменный (virtual domains) доступ к ящикам
- Также может использовать для авторизации MySQL/PgSQL/LDAP/PAM/file/cmd
- Обширные возможности для конфигурирования
Итак, будем использовать PAM, т.к. учетные записи почтовых ящиков хранятся в /etc/passwd. В исходном
файле конфигурации /usr/local/etc/tpop3d.conf все уже заточено для работы в стандартном режиме (ящики
в формате mbox в /var/mail, авторизация через PAM). В нашем же случае надо лишь кое-что подправить.
Пусть любители ломать POP3-сервисы отдыхают (т.к. сервис будет «прослушивать» только внутренний интерфейс):
RFC по POP3 требует ждать неожиданного замолчавшего клиента 600 сек (10 мин). Я считаю, что это в современных
условиях весьма много:
Ящики в формате maildir и находятся в /mail:
Один ящик — один клиент: так должно быть. Если двум или более клиентам нужно получать почту, направленную на
один и тот же адрес, следует воспользоваться алиасами.
Теперь можно запускать сервис:
Установка и последующая настройка EFA
Устанавливать решили на VPS с чистой CentOS 6.8 x64, который выступает в качестве relay-сервера. Первым делом, необходимо обновить все системные утилиты и компоненты до последних версий, которые доступны в репозиториях. Для этого используем команду:
Затем устанавливаем утилиты wget и screen, если они не были установлены:
После чего, скачаем скрипт, который выполнит установку EFA:
Даем скрипту права на исполнение:
Запускаем screen:
И запускаем скрипт:
Теперь можно свернуть наш скрин используя комбинацию Ctrl + A + D.
После установки нужно заново войти на сервер через ssh, используя данные для первого входа. Это нужно для запуска скрипта инициализации и первичной настройки EFA.
После входа, система предлагает ответить на несколько вопросов, чтобы настроить EFA.
Список вопросов выглядит следующим образом:
Функция | Свойство |
---|---|
Hostname | Указывается хостнейм машины |
Domainname | Домен, к которому относится машина. В сумме с хостнеймом, получится полный FQDN сервера |
Adminemail | Ящик администратора, который будет получать письма от самой системы (доступные обновления, различные отчеты и т.д.) |
Postmasteremail | Ящик человека, который будет получать письма, которые имеют отношение к MTA |
IP address | IP адрес машины |
Netmask | Маска |
Default Gateway | Шлюз |
Primary DNS | Первичный DNS сервер |
Secondary DNS | Вторичный DNS сервер |
Local User | Логин локального администратора. Используется для входа в систему и в веб-интерфейс MailWatch |
Local User Password | Пароль |
Root Password | Пароль для пользователя root |
VMware tools | Будет отображаться только, если установка происходит на виртуальную машину под управлением VMware. Она необходима для установки инструментов по работе с VMware |
UTC Time | Если Ваша машина находится в часовом поясе UTC, необходимо выбрать Yes |
Timezone | Тут можно выбрать другой часовой пояс, отличный от UTC |
Keyboard Layout | Раскладка клавиатуры, которая будет использоваться в системе |
IANA Code | Тут указывается код страны, в которой находится машина. Это необходимо для того, чтобы определить, с каких зеркал в будущем будут скачиваться обновления |
Your mailserver | Индивидуальный параметр. Используется в случае если EFA работает и на приём писем |
Your organization name | Название организации. Используется для заголовков в письмах |
Auto Updates | Задается политика автообновлений. По умолчанию установлено disabled. В этом случае, автообновлений не будет, но на емейл админа будут приходить уведомления о доступных обновлениях |
После такой анкеты, отображается весь список ответов. Если что-то нужно изменить, набираем номер вопроса и вводим новые данные. Когда готовы двигаться дальше, набираем ОК и жмем Enter. Система начнет процесс автонастройки.
По завершению конфигурирования, система перезагрузится и будет в полной боевой готовности.
В следующий раз, авторизуясь по ssh, сразу отобразится конфигурационное меню EFA. В этом меню доступно множество полезных действий:
- Перезагрузка / выключение системы;
- Изменение сетевых параметров;
- Настройка MailScanner;
- Включение / выключение grey-листинг;
- Включение / отключение автообновления;
- Настройка системы как исходящего relay-сервера;
- Изменение ящика Adminemail;
- Добавление / удаление почтовых доменов;
- Изменение настроек фильтров спама;
- Восстановление mysql базу, в случае повреждения из-за аварийного завершения работы.
Это список основных опций EFA, которые недоступны для редактирования через веб-интерфейс MailWatch. Поэтому, хорошо знать, где их найти.
Проверки url-ов в списках URIBL/SURBL
Устанавливаем приложения curl и GeoIP из портов ftp/curl и net/GeoIP соответственно. Затем
создаем временную папку для работы, например (я так делаю):
Скачиваем исходники с сайта David Saez:
Теперь, чтобы на FreeBSD собрать все это, необходимо слегка подправить исходники. Для начала
подготовим исходные тексты exim:
После распаковки и сборки, ищем директорию внутри work, где есть local_scan.h. У меня это
work/exim-4.69/build-FreeBSD-i386.
Теперь будем править Makefile так, чтобы он нашел все что нужно:
Путь /usr/local/include нужен для того, чтобы make нашел GeoIP.h. Также для сборки pipe.c нужно
подключить библиотеку с сигналами — правим pipe.c:
Все. Теперь собираем модуль и копируем его поближе к exim-у:
Осталось лишь подредактировать /usr/local/etc/exim/configure. В глобальной секции дописываем
(если ее еще нет) проверку mime:
а в секции ACL добавляем саму проверку:
Теперь можно запускать MTA:
Для теста URIBL, возьмем любой заблокированный url в тексте (например http://videpol.ru) и попробуем
написать сами себе письмо с какого-нибудь левого почтовика.
Настройка DKIM
DKIM расшифровывается как DomainKeys Identified Mail, что можно перевести как “Идентифицированная ключом домена почта”. Это метод аутентификации, дающий возможность проверить, действительно ли письмо отправлено с домена, фигурирующего в поле “От”. DKIM — эффективный метод борьбы с фишинговыми письмами и спамом.
Создание ключей DKIM при помощи opendkim-tool
1. Для начала, необходимо установить opendkim-tools. Сделать это можно с помощью следующей команды:
apt-get install opendkim-tools
2. Затем надо создать папку dkim, в которой будут хранится ключи:
mkdir /etc/exim4/dkim
3. Права на папку необходимо поменять с root на Debian-exim:
chown -R Debian-exim:Debian-exim /etc/exim4/dkim
4. Следующей командой генерируются открытый и закрытый ключи для домена example.com:
opendkim-genkey -D /etc/exim4/dkim/ -d mydomain.com -s mymail
Здесь:
D — каталог, в который будут сгенерированы ключи;
d — домен, который будет использовать этот ключ для подписания;
s — mymail — имя селектора, строкового идентификатора, который, в принципе, может быть любым.
В результате, вы получите файлы etc/exim4/dkim/mymail.private и /etc/exim4/dkim/mymail.txt с секретным и публичными ключами соответственно.
5. Теперь надо перейти в папку /etc/exim4/dkim/ и переименовать mail.private в example.com.key:
cd /etc/exim4/dkim/ mv mymail.private mydomain.com.key
6. Права на example.com.private (файл закрытого ключа) следует поменять с root на Debian-exim:
chown -R Debian-exim:Debian-exim /etc/exim4/dkim/mydomain.com.key chmod 640 /etc/exim4/dkim/mydomain.com.key
Настройки DNS
В файле mail.txt (cat /etc/exim4/dkim/mymail.txt) должно быть следущее содержимое:
mymail._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC57fv+meeGTF2gtQ/FO1WAT7hYrPTnKir06k3YR6ZBCLhAVbfEOAZ9OkVTAEf67T61eRY8w8hojnN9dxd07XIZ8KyatNXajWfYo3g0YDWopTfVfoaI4XFXqQH8V6iXyobArpSe3MSTSTqNFuS+w498JoHAkeXXhcl6kmjdSGkPtwIDAQAB" ) ; —--- DKIM key mymail for mydomain.com
Эту информацию необходимо добавить в TXT запись DNS зоны. В поле имя надо добавить
mymail._domainkey
в поле Контент —
v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC57fv+meeGTF2gtQ/FO1WAT7hYrPTnKir06k3YR6ZBCLhAVbfEOAZ9OkVTAEf67T61eRY8w8hojnN9dxd07XIZ8KyatNXajWfYo3g0YDWopTfVfoaI4XFXqQH8V6iXyobArpSe3MSTSTqNFuS+w498JoHAkeXXhcl6kmjdSGkPtwIDAQAB
Теперь mymail.txt можно просто удалить.
Чтобы проверить, всё ли в порядке с добавленными записями, надо выполнить следующую команду:
dig txt mymail._domainkey.mydomain.com | grep DKIM
Ответ должен быть такого вида:
mymail._domainkey.mydomain.com. 2214 IN TXT "v=DKIM1\; k=rsa\...
Определение DKIM Author Domain Signing Practices (DKIM ADSP)
Чтобы указать практики DKIM Author Domain Signing Practices (DKIM ADSP), следует добавить в TXT DNS домена ещё одну запись:
_adsp._domainkey.mydomain.com IN TXT "dkim=all"
Здесь:
all — отправка неподписанных сообщений запрещена;
discardable — все неподписанные сообщения должны быть заблокированы на стороне получателя;
unknown — домен может подписывать некоторые или все письма.
Настройка Exim
Настройка Exim начинается с добавления следующих строк в конфигурационный файл /etc/exim4/exim4.conf.template (перед секцией remote_smtp):
# DKIM: DKIM_DOMAIN = ${lc:${domain:$h_from:}} DKIM_KEY_FILE = /etc/exim4/dkim/DKIM_DOMAIN.key DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}} DKIM_SELECTOR = mymail
Конфигурационный файл может быть разделён на несколько более мелких файлов в процессе установки exim4. В таком случае, указанные строки необходимо добавить в файл /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp
Ещё один вариант — ручное создание конфигурационного файла /etc/exim4/exim4.conf. В таком случае, добавлять строки следует в этот файл.
Операцию следует повторить для каждого домена, а затем перезапустить exim командой:
/etc/init.d/exim4 restart
Проверка записей в конфигурационным файле Exim
Чтобы проверить записи в конфигурационном файле Exim, следует выполнить следующую команду:
exim -bP transports | grep dkim
Ответ должен иметь следующий вид:
dkim_domain = ${lc:${domain:$h_from:}} dkim_private_key = ${if exists{/etc/exim4/dkim/${lc:${domain:$h_from:}}.key}{/etc/exim4/dkim/${lc:${domain:$h_from:}}.key}{0}} dkim_selector = mymail
где dkim_selector это первое слово перед ._domainkey в открытом ключе
От автора
Я не противник postfix и sendmail. Однако проект протокола SMTP судя по всему писался, что
называется, «на коленке». Поэтому, администратор почтового сервера должен очень хорошо
разбираться в тонкостях работы своего сервера, чтобы хоть как-либо эффективно
сдерживать поток входящей (а иногда и исходящей) грязи (вирусы + спам + неизбежные проблемы,
определяющие специфику конкретной системы).
Sendmail с этой точки зрения (разбора тонкостей) является динозавром, раскопки которого давно
пора поручить опытным археологам — может быть они расскажут нам о светлом прошлом UUCP.
Postfix — другая крайность, свежий софт; работает по принципу «поставил и забыл». Но:
- Дыры в нем находят ежеквартально — как в свое время находили в sendmail.
- Активный интерес к postfix чаще всего проявляют Unix (а еще чаще Linux) админы со слишком
серьезным отношением к себе. Они думают, что одна эта софтина решит все их проблемы с почтой раз и
навсегда. Они ее ставят, запускают, и фанатеют от такой «простоты». - Опции конфигурирования postfix местами настолько путанны, что без чтения документации
редактировать их сложновато. А качество последней оставляет желать лучшего.
- Дыры можно отслеживать и вовремя зашивать (обновляться), но ведь выбор postfix-а обычно делается
именно из-за нежелания изучать предмет хоть-сколько нибудь глубоко. Эта лень мешает подписаться на рассылку,
а без рассылки о существовании дыр узнаем по факту взлома — со временем сервер таки ломают. - Фанатизм фиксирует в уме админа уверенность в абсолютной правильности (а если смотреть на треды
в форумах, то «праведности») такого метода работы. И когда приходит время крутить настройки, гордыня
(которая выросла из фанатизма) заставляет беднягу усиленно сопротивляться переменам. - Изменение параметров уже работающей системы — процесс всегда гораздо более трудоемкий и нервный, чем
настройка с нуля, когда есть время спокойно «покрутить». А тут еще эти «странные» опции…. Приемущество
postfix, указанное на сайте как «easy to administer» просто не соответствует действительности. Вообще
чтение документации по postfix может привести к исчезновению энтузиазма: не делайте это, не делайте то…
Трезвостатья расчитана
на небольшие почтовые сервера
В статье приводятся ссылки на различные части RFC протокола SMTP, в скобках приводится конкретный
пункт. Полный текст сего документа можно посмотреть
на IETF под номером 2821.
SpamAssassin
SpamAssassin анализирует содержимое писем. После анализа в заголовки письма добавляются строки, в которых указан уровень спама. В почтовом клиенте можно настроить фильтры, которые будут учитывать результаты анализа SpamAssassin. Например, для почтового клиента Mozilla Thunderbird:
- Перейдите в Инструменты → Фильтры сообщений.
- Выберите почтовый ящик в Фильтры для.
- Нажмите Создать.
- Укажите Имя фильтра.
- Настройте фильтр:
-
Нажмите Тема и выберите Настроить в выпадающем меню признаков.
Создание правила фильтрации
- Укажите в поле Новый заголовок сообщения значение «X-Spam-Level».
-
Выберите Содержит в типе условия.
Создание правила фильтрации
-
В качестве значения признака уровень спама будет применён фильтр. Уровень указывается от 1 до 10 символами «*». Рекомендуем уровень 7 — «*******».
Создание правила фильтрации
-
- Нажмите Ok.