Отправка писем EXIM с определенного IP

Wednesday, 07 Jun 2017

Прикупил тут с оказией VPS на 12Gb RAM и 500Gb SSD за 8 евро для того чтобы перенести на него часть сайтов с вздорожавшего на 6 баксов штатовского виртуального хостинга, ну и перекинул до кучи TDS и почтовые дела.

Ну и в связи с тем, что у меня несколько коммерческих сайтов разной направленности висят на разных IP, то появилось желание разнести и почтовые службы, чтобы уже комар носу не подточил.

(more…)

VN:F [1.9.21_1169]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)

Настройка DMARC + SPF + DKIM для почтаря на EXIM

Wednesday, 22 Mar 2017

Возникла тут необходимость прикрутить все эти дурацкие гуглеводско-мейловские антиспуфинг подписи домена, поскольку до части клиентов на GMAIL письма тупо не доставлялись от слова вообще.

Дурацкие они именно потому, что помимо лишних граблей, не являются гарантией доставки писем до жумеля и, к тому же, добавляют иллюзии защиты от фрауда, из-за чего уже было несколько шикарных историй, когда пользователи GMAIL велись на мошеннические письма с подменой отправителя и переводили не слабые суммы левым дядям.

Итого после третьей предъявы, что я игнорирую столь важных человеков, пришлось, для успокоения совести, озадачиться настройкой антиспам фарша в виде связки DMARC + SPF + DKIM. И если первые две делаются элементарно на уровне сервера доменных имен, то DKIM надо прикручивать, в том числе, и на уровне механизма доставки, чтобы он подписывал письма соответствующим образом.

Что вылилось в несколько часов головняка, ибо то что описано в тырнетах, у меня не захотело работать.

АПЧём по порядку:

(more…)

VN:F [1.9.21_1169]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.21_1169]
Rating: +1 (from 1 vote)

Тестирование smtp-аутентификации

Thursday, 26 Dec 2013

К вопросу о тестировании аутентификации на smtp-сервере Exim с помощью опочки -bd. Данные аутентификации AUTH команды скармливаются почтарю в формате base64, которые можно получить через небольшой перловый скриптик:
#!/usr/bin/perl
use MIME::Base64;
printf (“%s”, encode_base64(eval “\”$ARGV[0]\””));

(more…)

VN:F [1.9.21_1169]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)

Exim VS клиенты Android

Tuesday, 24 Dec 2013

Столкнулся тут с проблемой отправки писем с дефолтных почтовых клиентов для Android через smtp-сервер Exim. Сервак я этот настраивал 100500 лет назад и вроде все нормально у них пахало, а тут что то стали ныть что никак не могут отправить почту через свои устройства Samsung.

Причем для айфони все работало нормально во всех вариантах аутентификации, а вот почтовые клиенты Android, использующие plaintext, выдавали ошибку 435 Unable to authenticate at present.

(more…)

VN:F [1.9.21_1169]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)

Ошибка SMTP сессии на Exim

Monday, 26 Nov 2012

День начался радостно, с того, что по каким то причинам перестала доставляться почта от одного из клиентов, а на почтовом сервере Exim, пошли отлупы в виде сообщения “unexpected disconnection while reading SMTP command from smtp.xxxx.xx

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

(more…)

VN:F [1.9.21_1169]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)

Снижение нагрузки на почтовый сервер через DKIM

Thursday, 15 Nov 2012

Столкнулся тут с интересной технологией DKIM (DomainKeys Identified Mail), служащей для верификации почтовых отправлений между почтовыми серверами на уровне доменных ключей. То есть фактически аналог SPF, который в свое время достаточно агрессивно навязывали мелкомягкие, да так, что не имея его, невозможно было отослать письмо на Hotmail.

(more…)

VN:F [1.9.21_1169]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.21_1169]
Rating: +1 (from 1 vote)

Управление автоповторами в Exim

Friday, 24 Sep 2010

На одном из почтарей под управлением exim возникала постоянно ситуация, когда при отправке письма на широковещательный внутренний адрес компании alloffice@odminblog.ru, в случае переполнения ящиков одного или нескольких пользователей, письмо ничинало отсылаться каждые 15 минут, после чего количество забитых ящиков еще больше увеличивалось и почтарь впадал в ступор. Возникало не из-за того что я первоначально криво все настроил, а из-за того что пользователи имея ящики по 200 метров не запаривались на их очистку, в добавок к чему сыпали мейлами по 15-20 мегабайт.

В этой связи возникла задача переписать стандартное правило автоповторов для exim. Для этого открываем конфигурационный файл и идем в самый его конец, в секцию RETRY. Там мы видим следующие строки:

########################################
#                      RETRY CONFIGURATION                           #
########################################
begin retry
# Domain               Error       Retries
*                 refused_A   F,2h,20m;
*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h

Это стандартное правило автоповторов для exim, и оно всегда имеет две звездочки, для того чтобы описать общее правило для всех доменов и ошибок, не описанных отдельным полем. Об этом описании мы поговорим позже, а в данной записи получается что в случае любой ошибки для любого домена повтор отправки будет осуществляться каждые 15 минут в течении двух часов, после чего с интервалами от одного часа до 16 часов, с множителем в 1,5, после чего в течении 4 дней попытка будет осуществляться каждые 6 часов. После истечения времени автоповтора exim отбивает адрес доставки и скитывает отправителю отлуп.

Само правило автоповтора создается по следующему шаблону:
<Domain><Error><Retries>
Первым пункт может включать как имя домена, так и, для сужения задачи, адрес получателя.
Второй пункт описывает специфическую ошибку, которые бывают следующих типов:
auth_failed – при неудачной аутентификации в случае отправки на хост из списка  hosts_require_auth
data_4xx   – при ошибке которая получается для команды smtp диалога DATA, или сразу же после команды
mail_4xx   – при ошибке которая получается для команды smtp диалога MAIL.
rcpt_4xx    – которая получается для команды smtp диалога RCPT
Также в этих трех ошибках, ошибка может задаваться полным номером, для сужения правила применения автоповтора.
lost_connection – при неожиданном закрытии SMTP-сессии со стороны сервера
refused_MX – при отказе в соединении к хосту определенному как почтовый сервер по данным из MX записи
refused_A – при отказе в соединении к хосту полученному не из MX записи
refused – при любом отказе в соединении
timeout_connect_MX – при таймауте попытки соединения с хостом определенномв MX-записи
timeout_connect_A – при таймауте попытки соединения с хостом полученным не из MX-записи
timeout_connect – при таймауте любой попытки соединения
timeout_MX – при таймауте во время соединения или в процессе SMTP-сессии с хостом, полученным из MX-записи
timeout_A – при таймауте во время соединения или в процессе SMTP-сессии с хостом, полученным не из MX-записи
timeout – при таймауте во время соединения или в процессе SMTP-сессии
tls_required – в сессии соединения сервер должен был использовать TLS (сервер определен в списке  hosts_require_tls), но либо TLS не был предложен, либо сервер прислал ответ 4xx на команду STARTTLS
quota  – при локальной доставке транспортом “ appendfile ” была превышена квота почтового ящика пользователя
quota_<time> – при локальной доставке транспортом “ appendfile ” была превышена квота почтового ящика, и к почтовому ящику не обращались время равное <time>
Также после этого поля возможно определить отправителя, тем самыв сузив правило автоповтора, например для приоритезации руководства компании:
senders=<address list>
Тогда правило автоповтора будет выглядеть
kremlin.ru  rcpt_452  senders=”mainperson@odminblog.ru”  G,8h,10m,

Третий пункт отпределяет само правило автоповтора:
<letter>,<cutoff time>,<arguments>
Буквой задает алгоритм вычисления правила автоповтора:
F – повторять автоповтор с определенным интервалом. Первое число определяет в течении какого периода осуществлять автоповтор, второе задает интервал.
G -  повторять автоповтор в геометрически увеличивающихся интервалах. Первое число определяет максимальное значение для интервала, второе начальное значение интервала, третье число множитель, используемый для увеличения интервала при каждом повторении.Если первое число не задано, то интервал увеличивается до значения параметра retry_interval_max, который не может быть больше 24h.
H – повторять отправку повтора со случайными интервалами. Используемые аргументы – такие же как для  G. Для каждого повтора, предыдущий интервал умножается на фактор, для получения максимума следующего интервала. Минимальный интервал – первый аргумент параметра, и актуальный интервал выбирается случайным образом из диапазона между ними.
Если в поле правила автоповтора ничего не задано, то сразу после неудачной попытки отправки, генерируется рикошет и уходит в сторону отправителя.

Исходя из всего вышеописанного создаем новое правило автоповторов:
####################################################
#                      RETRY CONFIGURATION                           #
####################################################
begin retry
# Domain               Error       Retries
alloffice@odminblog.ru    *
odminblog.ru    quota
*                 refused_A   F,2h,20m;
*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h

По этому правилу на все ошибки препятствующие доставки на адрес alloffice@odminblog.ru будет генерироваться рикошет, а при переполнении ящика кого либо из пользователей домена odminblog.ru также будет генерироваться рикошет

VN:F [1.9.21_1169]
Rating: 7.0/10 (3 votes cast)
VN:F [1.9.21_1169]
Rating: +1 (from 1 vote)