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

неккорректный maildir при обработке с помощью sieve входящего письма

 , ,


0

1

Может коллективный разум что подскажет: есть связка dovecot + ldap, сейчас ко всей этой красоте прикручиваю sieve. Собственно все работает, кроме одного момента: sieve некорректно получает maildir от lmtp.

Собственно пример: есть в лдапе Вася Пупкин с uid=vasya_pupkin и maildir-ом /var/mail/vasya_pupkin. При этом он имеет мыло vp@domain.com. И все отлично работает, только вот sieve ничего не знает про реальный maildir, и пытается вычитать sieve-правила из /var/mail/vp@domain.com/, которого очевидно нет (ниже кусок лога)

Переборы различных переменных в 90-sieve.conf типа %u, %h, %{auth_user} и т.д. не помогли. Подошел к крайнему варианту - напилить шелл скрипт и делать дополнительный лдап запрос, но почему lmtp не сообщает sieve, который запускает актуальные var-ы?

Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: auth-master: userdb lookup(vp@domain.com): Finished userdb lookup (username=vp@domain.com quota_rule=*:bytes=419430400 mail=maildir:/var/mail/vasya_pupkin)
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: Added userdb setting: mail=maildir:/var/mail/vasya_pupkin
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: Added userdb setting: plugin/quota_rule=*:bytes=419430400
Jul 20 19:10:51 lmtp(39592, vp@domain.com): Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: Effective uid=112, gid=8, home=/var/mail/vp@domain.com
Jul 20 19:10:51 lmtp(39592, vp@domain.com): Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: Quota root: name=User quota backend=maildir args=
Jul 20 19:10:51 lmtp(39592, vp@domain.com): Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: Quota rule: root=User quota mailbox=* bytes=419430400 messages=0
Jul 20 19:10:51 lmtp(39592, vp@domain.com): Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: Quota grace: root=User quota bytes=41943040 (10%)
Jul 20 19:10:51 lmtp(39592, vp@domain.com): Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/var/mail/vasya_pupkin
Jul 20 19:10:51 lmtp(39592, vp@domain.com): Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: maildir++: root=/var/mail/vasya_pupkin, index=, indexpvt=, control=, inbox=/var/mail/vasya_pupkin, alt=
Jul 20 19:10:51 lmtp(39592, vp@domain.com): Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: quota: quota_over_flag check: quota_over_script unset - skipping
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: Pigeonhole version 0.5.13 (cdd19fe3) initializing
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: include: sieve_global is not set; it is currently not possible to include `:global' scripts.
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: file storage: Storage path `/var/mail/vp@domain.com/sieve' not found
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: file storage: Failed to normalize active script directory (path=/var/mail/vp@domain.com): Part of the path does not exist (yet)
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: file storage: Using Sieve script path: /var/mail/vp@domain.com/.dovecot.sieve
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: file storage: Storage path `/var/mail/vp@domain.com/.dovecot.sieve' not found
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: storage: No default script location configured
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: User has no personal script
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: sieve: No scripts to execute: reverting to default delivery.
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Debug: lmtp-server: conn [remote_ip]:51362 [2]: rcpt vp@domain.com: Mailbox INBOX: Mailbox opened because: lib-lda delivery
Jul 20 19:10:51 lmtp(vp@domain.com)<39592><GLhuIIv19mComgAAMkN5cA>: Info: msgid=<ad600520-30d3-1163-5c27-5c53d080cef2@domain.net>: saved mail to INBOX
Jul 20 19:10:51 lmtp(39592): Info: Disconnect from [remote_ip]: Client has quit the connection (state=READY)```
★★★★★

Ответ на: комментарий от Legioner

Все. разобрался, огромное спасибо за подсказку

по сути mail_home никак не был привязан к ldap, а вот mail_location был.

в конфиге dovecot-ldap.conf.ext заменил в user_attrs и pass_attrs

=mail=maildir:/var/mail/%{ldap:uid}

на

=home=/var/mail/%{ldap:uid}

ну и соответственно в 10-mail.conf мы можем сказать что

mail_location = maildir:~/

И все заработает. Про потенциальные грабли прочел, не мой случай.

leg0las ★★★★★ ()