Решение проблем. Exim

Автор: GAMER вкл. .

Если видим ошибку:

R=dnslookup T=remote_smtp defer (-53): retry time not reached for any host

1. Возможно удаленный хост упал, и еще не прошло время повторной попытки. Проверяем работает ли удаленный хост.

2. Побились базы самого exim. Лечим так:

/usr/local/etc/rc.d/exim stop

cd /var/spool/exim/db

rm retry retry.lockfile wait-remote_smtp wait-remote_smtp.lockfile

/usr/local/etc/rc.d/exim start

 

Если в логах видим такое:

2014-04-08 11:00:49 DNS list lookup defer (probably timeout) for 50.86.19.193.cbl.abuseat.org: assumed not in list
2014-04-08 11:00:49 DNS list lookup defer (probably timeout) for 194.190.52.77.cbl.abuseat.org: assumed not in list
2014-04-08 11:01:02 DNS list lookup defer (probably timeout) for 50.86.19.193.dnsbl.njabl.org: assumed not in list
2014-04-08 11:01:02 DNS list lookup defer (probably timeout) for 194.190.52.77.dnsbl.njabl.org: assumed not in list
2014-04-08 11:01:15 DNS list lookup defer (probably timeout) for 50.86.19.193.sbl-xbl.spamhaus.org: assumed not in list
2014-04-08 11:01:15 DNS list lookup defer (probably timeout) for 194.190.52.77.sbl-xbl.spamhaus.org: assumed not in list

то это значит, что проверка в антиспам-листе занимает много времени, и exim считает, что домен не числится в указаном блек-листе.

 

Если нужно удалить письмо из спула, то делаем так:

exim -Mrm 1WyzE9-000Fv8-Lb

 Установка TLS.

1. Включаем поддержку при сборке

2. Создаем самоподписаные сертификаты (взято тут):

 

mkdir /etc/exim/certs

 

openssl req -new -x509 -days 3650 -nodes -out /etc/exim/certs/cert.pem -keyout /etc/exim/certs/key.pem

 

Данные ключи будут использоваться для шифрованного канала.
Продолжим нашу настройку, подправим конфигурационные файлы Exim, Dovecot и RoundCube

 

Настройка Exim
Добавляем в /etc/exim/exim.conf

 

daemon_smtp_ports = 25:465:590 ########## TLS ############ tls_on_connect_ports = 465 tls_advertise_hosts = * tls_certificate = /etc/exim/certs/cert.pem tls_privatekey = /etc/exim/certs/key.pem #auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}

########## TLS ############

Если нужно создать сертификат на несколько доменом, то используем такую схему:
1. Создаем файл openssl.cnf с таким текстом
[req]
default_bits = 4096 # Длинна ключа в битах.
default_keyfile = host.key # Имя файла, в который будет записан закрытый ключ.
encrypt_key = no # Нам не нужно шифровать закрытый ключ паролем.
default_md = sha512 # Алгоритм хеша.
x509_extensions = v3_req # Включаем расширение V3.
prompt = no # Не нужно запрашивать данные у пользователя, мы всё пропишем здесь.
distinguished_name = req_distinguished_name # Имя секции с данными (может быть любым).

[req_distinguished_name]
C = UA # Country - Двухбуквенный код страны.
L = Dnipro # Locality - Город.
CN = gamer.uz.ua # Common Name - Имя домена.
emailAddress = Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. # Адрес электронной почты.
# Можно ещё указать следующие поля:
# ST (State - штат, название провинции и т.п.)
# O (Organization - название организации)
# OU (Organizational Unit - название подразделения)

[v3_req]
# Список альтернативных имён. Можно указать прямо здесь, но это не
# удобно, особенно если их много, так что мы указываем название секции
# с именами.
subjectAltName = @alt_names

[alt_names]
# Имена. Можно указать хоть сколько, главное чтобы цифры после точки были разными.
DNS.0 = gamer.uz.ua
DNS.1 = *.gamer.uz.ua
DNS.2 = vps.gamer.uz.ua
DNS.3 = mail.gamer.uz.ua

 

2. Выполняем команду
openssl req -new -x509 -days 3650 -config /usr/local/etc/exim/certs/openssl.cnf -nodes -out /usr/local/etc/exim/certs/all.cert.pem -keyout /usr/local/etc/exim/certs/all.key.pem

Подключаем созданые файлы в exim.