Skip to content

(debian) Установка и настройка exim4

Max Kalyabin edited this page Dec 3, 2015 · 1 revision

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 записях.

  1. Установить opendkim
  2. Сгенерировать ключи

Необходимо сгенерировать пару ключей - внешний и внутренний. Внешний будет храниться в 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 . Если как-то иначе - значит письмо не прошло спам-фильтр.