Привет ЛОР! Нужна твоя помощь.
Есть 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{...}}