-
Notifications
You must be signed in to change notification settings - Fork 3
(debian) Установка и настройка exim4
1. Установить и сконфигурировать exim4
apt-get install exim4
dpkg-reconfigure exim4-config
На первом шаге выбрать "internet site".
На втором пишем доменное имя сайта.
Всё остальное по дефолту.
2. Антиспам-настройки, DNS-записи
Это настраивается только в DNS записях. В SPF записи мы указываем какие сервера имеют право отправлять почту с вашего домена. В самом простом случае эта запись выглядит следующим образом:
mydomain.ru. IN TXT "v=spf1 ip4:<ip адрес, с которого разрешаем отправлять почту> ~all"
или:
mydomain.ru. IN SPF "v=spf1 a mx ~all"
Т.е. отправлять почту имеют право сервер с DNS записью в секции «a» и почтовый сервер в секции «mx». Более подробно о SPF написано в статье "Что такое SPF".
Составить свой вариант записи SPF поможет этот сервис http://openspf.org, а на специальной тестовой странице можно вбить адрес отправителя и IP адрес сервера и узнать, есть ли какие-то проблемы в настройке SPF записи.
Помимо этого добавляем обратную PTR-запись, указывающую на сервер.
3. Антиспам-настройки, dkim-подпись
Генерация ключей и формирование подписи производится с помощью OpenDKIM. Необоходимо произвести дополнительные настройки в DNS записях.
- Установить opendkim
- Сгенерировать ключи
Необходимо сгенерировать пару ключей - внешний и внутренний. Внешний будет храниться в DNS записях, а внутренний - на сервере.
opendkim-genkey -D /var/db/opendkim -d <domain.name> -s <selector>
/var/db/opendkim
— директория, где будут лежать ключи
-
<domain.name>
— доменное имя (example.com) -
<selector>
— указываем селектор, (например, mail). Селектор будет использоваться в DNS записи и указываться в настройке транспортов exim'а.
Создается два файла - mail.txt
(mail - выбранный нами селектор) и mail.private
.
На файл mail.private
необходимо установить права, чтобы его мог прочитать только exim:
chown Debian-exim /var/db/opendkim/mail.private
Добавить записи в DNS
В файле mail.txt
будет что-то вроде (длинный ключ обрезан и вставлено троеточие):
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGS...EQIDAQAB" ; ----- DKIM key mail for example.com
Эти данные нужно добавить в DNS запись:
mail._domainkey IN TXT "v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSqGS...EQIDAQAB"
Настройка opendkim и exim
В конфигурационном файле opendkim /etc/opendkim.conf
необходимо задать директивы Domain, KeyFile и Selector.
Например:
Domain example.com
Selector mail
KeyFile /var/db/opendkim/mail.private
Так как мы настраивали подпись только к одному домену, то сложностей не возникло. Для нескольких доменов нужно читать про директиву KeyTable.
Для exim нужно править конфиг в секции TRANSPORTS. В debian все конфиги для удобства разбиты по разным файлам, соответственно ищем в /etc/exim4/conf.d/
нужный файл.
Сразу после begin transports должно быть что-то вроде:
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /var/db/opendkim/mail.private #- важно!!!! Пишем путь к приватному ключу
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
А после remote_smtp: что-то вроде:
driver = smtp
dkim_domain = DKIM_DOMAIN
dkim_selector = mail # - выбранный нами селектор.
dkim_private_key = DKIM_PRIVATE_KEY
В Debian это всё уже прописано, нужно просто путь к ключу и селектор указать. В CentOS пришлось добавить все директивы.
Exim4 подхватывает конфиги на лету, соответственно, для их сборки требуется выполнять команды:
update-exim4.conf.template -r
Перезапуск сервисов
service opendkim restart
service exim4 restart
Нужно заглянуть в /var/log/exim4/paniclog
. Если там есть какие-то проблемы связанные с проделанными настройками, их нужно устранить.
Прописать PTR-запись на домен
Допустим, у нас домен example.com и почта отправляется с адреса 1.1.1.1.
Поэтому, чтобы письмо не попало в спам, необходимо в настройках домена прописать PTR-запись:
1.1.1.1.in-addr.arpa PTR example.com
Дополнительные рекомендации
Плюс к этому, почтовики более лояльно относятся к письмам, если в письмах есть заголовок List-Unsubscribe с ссылкой на отписку от рассылки.
4. Анти-спам настройки, проверка
Отправить себе на gmail ящик письмо с правильным указанием отправителя. Если настройки верны, в исходном тексте письма, в заголовках должны быть строки вида:
Received-SPF: pass (google.com: domain of 20140520151802ac2fb79eee714cb28ab4abb00ea082cd@bounces.amazon.com designates 54.240.13.24 as permitted sender) client-ip=54.240.13.24;
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of 20140520151802ac2fb79eee714cb28ab4abb00ea082cd@bounces.amazon.com designates 54.240.13.24 as permitted sender) smtp.mail=20140520151802ac2fb79eee714cb28ab4abb00ea082cd@bounces.amazon.com;
dkim=pass [email protected];
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
s=jvxsykglqiaiibkijmhy37vqxh4mzqr6; d=amazon.com; t=1400599082;
h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type;
bh=4/K8s500HFF41sXCKD/F4CVHvjXI7fgxCAgxopjiiAw=;
b=UYguDMVukmHWft9uLtlRJJqZygob+VUlalo12g1UheDw0Q+M5XVSnmnIM84w1jXf
4MzGytsswXkA0hbW6gpJNxo1plJ+qqldV/UpcxBWmcbfI59ih4PcFZq5hxolLfZaszI
Z29EVLlF+6glavwkwD2yAbHk7BhSA6wvK4gzxaD0=
Основное: spf=pass
и dkim=pass
.
Обратить внимание на запись: domain of 20140520151802ac2fb79eee714cb28ab4abb00ea082cd@bounces.amazon.com designates 54.240.13.24 as permitted sender
. Если как-то иначе - значит письмо не прошло спам-фильтр.