LINUX.ORG.RU
решено ФорумAdmin

dkim, exim и dovecot-lda


1

2

Привет ЛОР! Нужна твоя помощь.

Есть MTA (exim), использует dovecot-lda для раскладывания почты. Настроено оно следующим образом:

begin routers

...

mysql_localuser:
    driver = accept
    condition = ${lookup mysql{SELECT username from mailbox WHERE username='${quote_mysql:$local_part@$domain}' AND active='1'}}
    transport = dovecot_delivery

localuser:
    driver = accept
    check_local_user
    transport = dovecot_delivery
    cannot_route_message = Unknown user

begin transports

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim4/dkim/${lc:${domain:$h_from:}}.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
DKIM_SELECTOR = dkim

remote_smtp:
    driver = smtp
    dkim_domain = DKIM_DOMAIN
    dkim_selector = DKIM_SELECTOR
    dkim_private_key = DKIM_PRIVATE_KEY
    hosts_avoid_esmtp   = ${lookup mysql{...}}

dovecot_delivery:
    driver = pipe
    command = /usr/lib/dovecot/dovecot-lda -e -d $local_part@$domain -f $sender_address -a $original_local_part@$original_domain
    message_prefix =
    message_suffix =
    delivery_date_add
    envelope_to_add
    return_path_add
    return_fail_output
    log_output
    umask = 077
    group = 8
    user = 106
    temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

Незадача, по умолчанию используется транспорт dovecot_delivery (из-за roundcube + sieve). Возможно ли подписывать этим самым dkim`ом в самом dovecot`е, или же возможно сделать прозрачный «редирект» с remote_smtp -> dovecot_delivery.

Решение: а решение простое - добавляем две строки

begin transports

remote_smtp:
    driver = smtp
    dkim_domain = ${lc:${domain:$h_from:}}
    dkim_selector = dkim
    dkim_private_key = ${if exists{/etc/exim4/dkim/${dkim_domain}.key}{/etc/exim4/dkim/${dkim_domain}.key}{false}}
    dkim_canon = relaxed
    dkim_strict = yes
    hosts_avoid_esmtp   = ${lookup mysql{...}}
★★★★★

Последнее исправление: leg0las (всего исправлений: 2)

Хм, даже заменив dovecot_delivery на remote_smtp в mysql_localuser - все равно не подписывается.

leg0las ★★★★★
() автор топика

автор, ты хочешь странного. DKIM имеет смысл только в транспорте, где driver=smtp. Подписывать DKIM и отправлять в пайп нельзя.

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

Ок. Тогда как быть с сервисами, которые хотят dkim?

leg0las ★★★★★
() автор топика

Отвечу сам себе - забавно, но после добавлений пары строк по вот этому мануалу все заработало:

begin transports

remote_smtp:
    driver = smtp
    dkim_domain = ${lc:${domain:$h_from:}}
    dkim_selector = dkim
    dkim_private_key = ${if exists{/etc/exim4/dkim/${dkim_domain}.key}{/etc/exim4/dkim/${dkim_domain}.key}{false}}
    dkim_canon = relaxed
    dkim_strict = yes
    hosts_avoid_esmtp   = ${lookup mysql{...}}

Да, с dovecot-lda немного загнался. Он же только письма раскидывает, а доставкой на удаленный сервер занимается именно remote_smtp

leg0las ★★★★★
() автор топика

Никогда не понимал - нафиг все используют пайпы, танцы с exit codes. Конфиги то простые:

dovecot_lmtp_tcp:
  driver   = smtp
  protocol = lmtp
  port     = 24024
  hosts    = localhost
  allow_localhost
  return_path_add
и в dovecot'e
protocols = " .... lmtp"
service lmtp {
  inet_listener lmtp {
    address = 127.0.0.1
    port = 24024
  }
}
просто, быстро и без кучи форков и с нормальной диагностикой ошибок.

LynxChaus
()
Ответ на: комментарий от LynxChaus

А где можно почитать?

И насколько я помню, я не использую lmtp, оно ж вроде под ldap делалось?

leg0las ★★★★★
() автор топика
21 августа 2013 г.
Ответ на: комментарий от leg0las

SMTP - Simple Mail Transfer Protocol. LMTP - Local Mail Transfer Protocol. ldap вообще никак не при делах.

А читают обычно в wiki dovecot'a.

LynxChaus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.