Как стать автором
Обновить

Комментарии 28

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

Понимаете, когда посетитель Харба бежит глазами по списку статей, его мозг для каждой статьи отвечает на вопрос «Оно мне нужно?» Если ответ отрицательный, посетитель переходит к следующей статье. Если положительный, то открывает ее в новой вкладке.

Вам ничего не стоит написать в самом начале статьи что-то вроде:
DKIM — технология, позволяющая привязывать отправляемые сообщения к доменному имени при помощи цифровой подписи. Почтовые сервера вроде того же GMail относятся к таким письмам с бóльшим доверием и с меньшей вероятностью посчитает их спамом.

И тысячам посетителей Хабра не придется играть в квест «разберись, о чем все-таки эта статья».
В прошлом комментарии я дал ссылку более чем обзорную статью по обсуждаемому вопросу. Любой из тысяч пользователей Хабра может найти эту статью в первых строках ответа в Google по запросу «DKIM». То, что вы не нашли её сами, и что не увидели в прошлом моём комментарии ссылку на эту статью, удивляет меня непрерывно.
План действий для человека, не знакомого с сабжем, по вашему предложению:
1) Пробежать глазами тизер статьи и не понять, о чем статья.
2) Открыть полный текст статьи, пробежать глазами и не найти ответа.
3) Сделать поиск по Хабру.
4) Пролистать пару десятков результатов, открыть полный текст нескольких из них, не найти внятного ответа ни в одной.
5) Плюнуть на это дело, сделать поиск в Гугле/Википедии, прочитать (весьма мудрёный) ответ там.

План по моему предложению:
1) Пробежать глазами тизер статьи и сразу понять, о чем она.

И все благодаря двум вводным предложениям в самом начале статьи. Меня «непрерывно удивляет», что вы отрицаете их очевидную полезность.

PS Сама статья замечательная. Добавил в закладки, плюсанул в статью и в карму. Большое спасибо за ваш труд.
ИМХО тем, кто не знает, что такое DKIM, оно и не нужно.
Хех, вы оптимист. Сейчас область IT настолько разрослась, что один специалист, насколько бы крут он не был, чисто физически не в состоянии знать все. Даже по верхам. И есть много вещей, которые нужны — но о которых мало кто знает.
При наличии связки Postfix+Amavis смысла в дополнительном пакете нет. достаточно в amavis добавить
$enable_dkim_verification = 1;
$enable_dkim_signing = 1;
dkim_key('domen.ru', 'key1', '/var/db/dkim/domen.ru.key.pem');
@dkim_signature_options_bysender_maps = (
{ '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );
$interface_policy{'10024'} = 'DKIM_ALWAYS';
$policy_bank{'DKIM_ALWAYS'} = { originating => 1, };
Так я про то, что последнее время нам все меньше попадают сервера без SpamAssasin или Amavis.
Рекомендую написать вам статью о настройке DKIM на сервервах с Amavis или SpamAssassin. От этого будет гораздо больше пользы чем наше с вами тут обсуждение у статьи на совершенно другую конкретную тему.
О, я скоро у себя «довнедрю» эту связку, и постараюсь написать :) Там правда без SpamAssassin.
Да, хорошая тема с Amavis. правда я не нашел как разными ключами с разных шлюзов подписывать. Пока только разные пути (порты) для разных шлюзов задаю.
Не советую запрещать принятие почты без подписи dkim, по крайней мере на первое время после настройки dkim подписи.

А теперь собсвтенно почему:
Я тоже когда-то настроил себе на сервере dkim чрез dkim-milter (dkim-filter) для postfix. Проверил — все работает, gmail в заголовках показывает dkim=pass. Радости было много, но как выяснилось не надолго.

Через время (месяц) обнаруживаю, что некоторые письма не проходят проверку dkim и в заголовках того же gmail красуется
dkim=neutral (body hash did not verify)

Это значит что хеш подписи не сходится с текушим хешем тела письма. Эта ситуаци происходит когда, что-то изменило тело письма после совершения подписи по dkim. В моем случае после фильтра dkim-milter, что-то меняло тело письма.

Ситуаций, когда что-то меняет тело может быть много, в инете достаточно много такий кейсов когда «избранные» письма не проходят dkim проверку.
Мой же случай оказался в том, что тело некоторых писем состовлялось из файлов, которые были с EOL (End Of Line) в формате windows, т.е. \r\n и по всей видимости постфикс после дким фильтра менял формат EOL на Unix, т.е. — \n
¯_(ツ)_/¯ С равнозначной вероятностью это может быть \r\n, а может и man-in-middle.
Сейчас уже даже гугл предупреждает всех если письмо было доставлено по незащищенному каналу (красный значек), настраивайте tls и mim уже вас не коснется, по крайней мере для писем который вы отсылаете.
Есть довольно средненькая по объхему рассылочка со своего сервера(Postfix,DKIM.SPF,PTR).
И все бы хорошо, но яндекс через раз признает DKIM валидным.
Что только не делал. В итоге написал в саппорт и онеи признали проблему на свой стороне.
Так что если у кого Яндекс чудит — не удивляйтесь.
А еще в компаниях используются Exchange, Zimbra, exim, sendmail, postfix и свои центры выдачи эцп для писем.
И как мне, имея корпоративный exchange и аутлук/OWA/the bat/thunderbird/kmail проверить это Ваше непонятно кем и как подписанное письмо?
DKIM не используется в качестве ЭЦП писем и не предназначен для этого, потому описанная вами проблема к письмам, подписанным DKIM, не относится. Кстати говоря, GMail и Mail.ru подписывают все исходящие письма с помощью DKIM.
Небольшая поправка, правда не знаю для всех ли дистрибутивов актуально, пробовал на Debian 6.
По дефолту opendkim слушает на сокете, а не на 8891

Посему, чтобы заставить его сулшать порт, необходимо в файл
/etc/default/opendkim
добавить строки
SOCKET=«inet:8891@localhost»
Конечно, упоминание aptitude и тег "debian" прямо говорят, что инструкция для Debian-подобных ОС, но эта информация для обладателей CentOS 6: по дефолту OpenDKIM как раз слушает указанный порт, а не указанный в статье сокет.
В статье OpenDKIM слушает сокет потому что его явно об этом попросили. Сокет кошерней как-то.
В статье OpenDKIM просят явно слушать сокет только в случае запуска в chroot. "… Если Postfix вы используете без chroot, то для настройки больше ничего не нужно делать..." А насчёт "кошерности" согласен, именно поэтому сам настроил через сокет.
Скажите а для чего нужна эта запись «dig txt mail._domainkey.example.com» в DNS, Посмотрел несколько статей по теме, только в вашей ее встречаю. Что она делает не могли бы пояснить?
Вопрос отпал, глупость сморозил-с. :)
В моём случае ещё пришлось сделать такую правку, чтобы всё заработало:

chown opendkim:opendkim /etc/opendkim/mail.private
chmod 0400 /etc/opendkim/mail.private

Для приватного ключа ужесточаем права, на то он и приватный, чтобы его не могли использовать посторонние
Это в новой версии появилось. Спасибо что напомнили, дополню инструкцию.
Раз такое дело, тогда обновить немного раздел «Если Postfix в chroot...»
У меня входящая почта начала проверятся на DKIM только с настройкой:
postconf -e smtpd_milters=unix:/var/spool/postfix/var/run/opendkim/opendkim.sock

non_smtpd_milters оставляем без изменений, исходящая почта подписывается
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории