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

Dovecot sieve

 ,


0

2

Пытаюсь прикрутить сабж к почтовичку на Debian jessie:

# apt install dovecot-sieve

# cat /etc/dovecot/conf.d/15-lda.conf
protocol lda {
  mail_plugins = $mail_plugins sieve
}

# cat /etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
  mail_plugins = $mail_plugins sieve
}

# cat /etc/dovecot/conf.d/90-sieve.conf
plugin {
  sieve = ~/.dovecot.sieve
  sieve_before = /etc/dovecot/sieve/before
  sieve_dir = ~/sieve
}

# cat /etc/dovecot/sieve/before/sa.sieve
require ["fileinto", "imap4flags"];

if header :contains "Subject" "*****SPAM*****" {
  addflag "\Seen";
  addflag "Spam";
  fileinto "Spam";
  stop;
}

# ls -l /etc/dovecot/sieve/before/sa.sieve
-rw-r--r-- 1 root root 153 окт 20 10:24 sa.sieve
-rw-r--r-- 1 root root 246 окт 23 10:41 sa.svbin
По итогам, после растарта довкота, письма с заголовком, содержащим
*****SPAM*****
ложаться в inbox.

Прошу помощи.
Спасибо за внимание.

PS. Постфикс перевёл на lmtp, было на довкотовом lda, сейчас:

$ cat /etc/postfix/main.cf | grep virtual_transport
virtual_transport = lmtp:unix:private/dovecot-lmtp
Письма ходят и ложаться в каталоги.

★★★★

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

У меня сейчас нет возможности старые скрипты посмотреть, но

0. После изменений сам dovecot перезапускали целиком, потому что graceful оставляет детей до конца операций?
1. Не хватает логов обработки письма.
2. Я бы на время дебага указал полный путь до скрипта в sieve_before
3. В примере значения subject заключены в квадратные скобки (впрочем это наверное для >1 значения и компилятор должен был ругнуться если что не так)
4. с помощью dovecot-lda можно из коммандной строки проверять, как оно работает, подавая на вход нужное письмо и указывая пользователя. ы? Потом уже разбираться с lmtp

zgen ★★★★★
()

И почему такая большая разница в дате оригинального скрипта и его компилированной копии?

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

0. После изменений сам dovecot перезапускали целиком, потому что graceful оставляет детей до конца операций?

# systemclt restart dovecot

1. Не хватает логов обработки письма.

# sieve-test /etc/dovecot/sieve/before/sa.sieve 1477311139.Vfe11I22c1dadM453343.mail.examople.com\:2\,a 
sieve-test(root): Debug: Effective uid=0, gid=0, home=/root
sieve-test(root): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt=

Performed actions:

 * store message in folder: Spam
        + add IMAP flags: Seen Spam

Implicit keep:

  (none)

sieve-test(root): Info: final result: success

2. Я бы на время дебага указал полный путь до скрипта в sieve_before

Попробую, спасибо.

3. В примере значения subject заключены в квадратные скобки (впрочем это наверное для >1 значения и компилятор должен был ругнуться если что не так)

Да, именно так. Я для простоты отдалки взял только одно значение.

4. с помощью dovecot-lda можно из коммандной строки проверять, как оно работает, подавая на вход нужное письмо и указывая пользователя. ы?

Сейчас попробую и запосчу результаты.

Спасибо.

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

почему такая большая разница в дате оригинального скрипта и его компилированной копии?

Я перед рестартом довкота ещё раз посотрел скрипт и сделал sievec.
Сам скрипт не менял при этом.

Yustas ★★★★
() автор топика
Ответ на: комментарий от zgen
$ cat /tmp/test.eml
To: <mb1@example.com>
From: <mb2@example.com>
Subject: *****SPAM***** test

test

# cat /tmp/test.eml | /usr/lib/dovecot/dovecot-lda -f mb2@example.com -d mb1@example.com

Работает.

Yustas ★★★★
() автор топика
Последнее исправление: Yustas (всего исправлений: 1)
Ответ на: комментарий от ArcFi

Да, вопрос не в lda/lmtp и, походу, вообще не в sieve а в postfix.
Ниже дебаг к примеру с ручной отправкой в комменте выше.

# cat /var/log/dovecot-debug.log | grep lda
Oct 24 15:38:04 lda: Debug: Loading modules from directory: /usr/lib/dovecot/modules
Oct 24 15:38:04 lda: Debug: Module loaded: /usr/lib/dovecot/modules/lib90_sieve_plugin.so
Oct 24 15:38:04 lda: Debug: auth input: mb1@example.com home=/var/mail/example.com/mb1 uid=1002 gid=1002
Oct 24 15:38:04 lda(mb1@example.com): Debug: Effective uid=1002, gid=1002, home=/var/mail/example.com/mb1
Oct 24 15:38:04 lda(mb1@example.com): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/var/mail/example.com/mb1
Oct 24 15:38:04 lda(mb1@example.com): Debug: maildir++: root=/var/mail/example.com/mb1, index=, indexpvt=, control=, inbox=/var/mail/example.com/mb1, alt=
Oct 24 15:38:04 lda(mb1@example.com): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt=
Oct 24 15:38:15 lda(mb1@example.com): Debug: Destination address: mb1@example.com (source: user@hostname)
Oct 24 15:38:15 lda(mb1@example.com): Debug: sieve: Pigeonhole version 0.4.2 initializing
Oct 24 15:38:15 lda(mb1@example.com): Debug: sieve: include: sieve_global_dir is not set; it is currently not possible to include `:global' scripts.
Oct 24 15:38:15 lda(mb1@example.com): Debug: sieve: script file /var/mail/example.com/mb1/.dovecot.sieve not found
Oct 24 15:38:15 lda(mb1@example.com): Debug: sieve: user's script ~/.dovecot.sieve doesn't exist (trying default script location instead)
Oct 24 15:38:15 lda(mb1@example.com): Debug: sieve: no default script configured for user
Oct 24 15:38:15 lda(mb1@example.com): Debug: sieve: user has no valid location for a personal script
Oct 24 15:38:15 lda(mb1@example.com): Debug: sieve: executed before user's personal Sieve script(1): /etc/dovecot/sieve/before/sa.sieve
Oct 24 15:41:24 lda: Debug: Loading modules from directory: /usr/lib/dovecot/modules
Oct 24 15:41:24 lda: Debug: Module loaded: /usr/lib/dovecot/modules/lib90_sieve_plugin.so
Oct 24 15:41:24 lda: Debug: auth input: mb1@example.com home=/var/mail/example.com/mb1 uid=1002 gid=1002
Oct 24 15:41:24 lda(mb1@example.com): Debug: Effective uid=1002, gid=1002, home=/var/mail/example.com/mb1
Oct 24 15:41:24 lda(mb1@example.com): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/var/mail/example.com/mb1
Oct 24 15:41:24 lda(mb1@example.com): Debug: maildir++: root=/var/mail/example.com/mb1, index=, indexpvt=, control=, inbox=/var/mail/example.com/mb1, alt=
Oct 24 15:41:24 lda(mb1@example.com): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt=
Oct 24 15:41:24 lda(mb1@example.com): Debug: Destination address: mb1@example.com (source: user@hostname)
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: Pigeonhole version 0.4.2 initializing
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: include: sieve_global_dir is not set; it is currently not possible to include `:global' scripts.
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: script file /var/mail/example.com/mb1/.dovecot.sieve not found
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: user's script ~/.dovecot.sieve doesn't exist (trying default script location instead)
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: no default script configured for user
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: user has no valid location for a personal script
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: executed before user's personal Sieve script(1): /etc/dovecot/sieve/before/sa.sieve
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: loading script /etc/dovecot/sieve/before/sa.sieve
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: script binary /etc/dovecot/sieve/before/sa.svbin successfully loaded
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: binary save: not saving binary /etc/dovecot/sieve/before/sa.svbin, because it is already stored
Oct 24 15:41:24 lda(mb1@example.com): Debug: sieve: executing script from /etc/dovecot/sieve/before/sa.svbin
# cat /var/log/dovecot-info.log | grep lda
Oct 24 15:41:24 lda(mb1@example.com): Info: sieve: msgid=unspecified: stored mail into mailbox 'Spam'

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

Работает.

Отлично, значит за скрипт и настройки dovecot можно не переживать.

Значит либо особенности работы dovecot-lmtp либо настройки самого postfix.

Сам то dovecot-lmtp включен в dovecot?

Еще там есть вот такое: http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP

postmaster_address = postmaster@domainname # required

меня смущает слово «required»

А так же написано, что в postfix должен быть указан mailbox-transport

mailbox_transport = lmtp:unix:private/dovecot-lmtp

Или это не ваш случай? (я не слишком силен в постфиксе - давно было, подзабыл уже)

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 2)
Ответ на: комментарий от zgen

Сам то dovecot-lmtp включен в dovecot?

$ doveconf protocols
protocols = imap lmtp pop3

$ cat /etc/dovecot/conf.d/10-master.conf
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }

  inet_listener lmtp {
    # Avoid making LMTP visible for the entire internet
    #address = 127.0.0.1
    #port = 2424
  }
}

А так же написано, что в postfix должен быть указан mailbox-transport

Да, выставлен именно так.
Другой вопрос, как я написал выше, что через dovecot-lda оно вручную работает.
Т.е. проблема, скорее всего в postfix.
Но я не понимаю где.

$ cat /etc/postfix/main.cf
virtual_transport = dovecot
#virtual_transport = lmtp:unix:private/dovecot-lmtp

$ cat /etc/postfix/master.cf
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

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

Я тут почитал, что LMTP вроде как эффективнее по ресурсам, поэтому переключился на него, и Sieve не сломался.
Рабочие конфиги:
https://paste.fedoraproject.org/460320/77324240/
https://paste.fedoraproject.org/460321/47732428/
https://paste.fedoraproject.org/460322/24337147/
https://paste.fedoraproject.org/460325/24678147/
Смотрите и сравнивайте.
Возможно, это поможет вам быстрее обнаружить косяк.

ArcFi
()
Ответ на: комментарий от zgen
yustas@dovefix:/etc/dovecot/conf.d$ for f in `ls`; do echo $f && cat $f | grep -v "#"; done

10-auth.conf
auth_worker_max_count = 100
auth_mechanisms = plain login
!include auth-sql.conf.ext

10-director.conf
service director {
  unix_listener login/director {
  }
  fifo_listener login/proxy-notify {
  }
  unix_listener director-userdb {
  }
  inet_listener {
  }
}
service imap-login {
}
service pop3-login {
}
protocol lmtp {
}

10-logging.conf
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log
debug_log_path = /var/log/dovecot-debug.log
auth_verbose = no
auth_verbose_passwords = no
auth_debug = no
auth_debug_passwords = no
mail_debug = yes
verbose_ssl = no
plugin {
}

10-mail.conf
mail_location = maildir:/var/mail/%d/%n
namespace inbox {
  type = private
  separator = 
  inbox = yes
}
mail_shared_explicit_inbox = yes
mail_privileged_group = mail

10-master.conf
default_process_limit = 750
default_client_limit = 1000
mail_max_userip_connections = 75
service imap-login {
  inet_listener imap {
  }
  inet_listener imaps {
  }
  service_count = 1
}
service pop3-login {
  inet_listener pop3 {
  }
  inet_listener pop3s {
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
  inet_listener lmtp {
  }
}
service imap {
}
service pop3 {
}
service auth {
  client_limit = 3000
  unix_listener auth-userdb {
  }
  unix_listener /var/spool/postfix/private/auth {
     mode = 0660
     user = postfix
     group = postfix
  }
}
service auth-worker {
}
service dict {
  unix_listener dict {
  }
}
service anvil {
}

10-ssl.conf
ssl = yes
ssl_cert = </etc/ssl/certs/example_com.crt
ssl_key = </etc/ssl/private/example_com.key
ssl_protocols = !SSLv2 !SSLv3
ssl_cipher_list=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:!CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_dh_parameters_length = 2048
ssl_prefer_server_ciphers = yes

10-tcpwrapper.conf

15-lda.conf
protocol lda {
  mail_plugins = $mail_plugins sieve
}

15-mailboxes.conf
namespace inbox {
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Spam {
    special_use = \Junk
    auto=subscribe
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Trash {
    special_use = \Trash
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

20-imap.conf
protocol imap {
  mail_plugins = $mail_plugins antispam
}

20-lmtp.conf
protocol lmtp {
  mail_plugins = $mail_plugins sieve
}

20-pop3.conf
protocol pop3 {
  mail_plugins = $mail_plugins
}

90-acl.conf
plugin {
}
plugin {
}

90-plugin.conf
plugin {
    antispam_verbose_debug = 0
    antispam_debug_target = syslog
    antispam_trash = trash;Trash
    antispam_spam = junk;Junk;Spam
    antispam_backend = pipe
    antispam_mail_spam  = --spam
    antispam_mail_notspam  = --ham
    antispam_mail_sendmail = /usr/local/bin/sa-learn.sh
}

90-quota.conf
plugin {
}
plugin {
}
plugin {
}
plugin {
}

90-sieve.conf
plugin {
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
  sieve_before = /etc/dovecot/sieve/before
}

90-sieve-extprograms.conf
plugin {
}
Yustas ★★★★
() автор топика
Ответ на: комментарий от zgen
yustas@dovefix:/etc/dovecot/conf.d$ cat /etc/postfix/main.cf | grep -v "#"
myhostname = dovefix.example.com
mydestination = localhost
mynetworks = 10.10.10.0/24
mail_owner = postfix
inet_interfaces = all
inet_protocols = ipv4
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
message_size_limit = 52428800
virtual_mailbox_limit = 52428800

unknown_local_recipient_reject_code = 550
setgid_group = postdrop
html_directory = no
content_filter = smtp-amavis:[127.0.0.1]:10024
bounce_template_file = /etc/postfix/bounce.cf
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_maps
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
manpage_directory = /usr/share/man
sample_directory = /usr/share/postfix
readme_directory = /usr/share/doc/postfix
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debugger_command =
	 PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
	 ddd $daemon_directory/$process_name $process_id & sleep 5
transport_maps = pgsql:/etc/postfix/transport.cf
virtual_uid_maps = pgsql:/etc/postfix/uids.cf
virtual_gid_maps = pgsql:/etc/postfix/gids.cf
virtual_mailbox_base = /var/mail
virtual_mailbox_maps = pgsql:/etc/postfix/mailboxes.cf
virtual_maps = pgsql:/etc/postfix/virtual.cf
virtual_transport = dovecot
smtpd_helo_required = yes
smtpd_etrn_restrictions = reject
smtpd_client_restrictions =
 check_client_access  hash:/etc/postfix/whitelist
 check_client_access  hash:/etc/postfix/client_access
 permit_mynetworks
 permit_sasl_authenticated
 reject_unknown_client_hostname
 reject_invalid_hostname
 reject_unauth_pipelining
 reject_unauth_destination
 block_dsl
 permit
smtpd_helo_restrictions =
 check_helo_access  hash:/etc/postfix/whitelist
 check_helo_access  hash:/etc/postfix/helo_access
 permit_mynetworks
 permit_sasl_authenticated
 reject_invalid_helo_hostname
 reject_non_fqdn_helo_hostname
 reject_unknown_helo_hostname
 permit
smtpd_sender_restrictions =
 check_sender_access  hash:/etc/postfix/whitelist
 check_sender_access  hash:/etc/postfix/sender_access
 permit_mynetworks
 permit_sasl_authenticated
 reject_non_fqdn_sender
 reject_unknown_sender_domain
 warn_if_reject reject_sender_login_mismatch
 permit
smtpd_recipient_restrictions =
 check_recipient_access  hash:/etc/postfix/whitelist
 check_recipient_access  hash:/etc/postfix/recipient_access
 permit_mynetworks
 permit_sasl_authenticated
 reject_unauth_destination
 reject_unauth_pipelining
 reject_non_fqdn_recipient
 reject_unknown_recipient_domain
 reject_unlisted_recipient
 reject_invalid_hostname
 permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA, CAMELLIA
smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem
smtpd_tls_security_level = may
tls_preempt_cipherlist = yes
smtpd_tls_mandatory_ciphers = high
smtpd_tls_ciphers           = medium
smtp_tls_mandatory_ciphers  = $smtpd_tls_mandatory_ciphers
smtp_tls_ciphers            = $smtpd_tls_ciphers
lmtp_tls_mandatory_ciphers  = $smtpd_tls_mandatory_ciphers
lmtp_tls_ciphers            = $smtpd_tls_ciphers
smtpd_tls_key_file = /etc/ssl/private/example_com.key
smtpd_tls_cert_file = /etc/ssl/certs/example_com.crt
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_cache
tls_random_source = dev:/dev/urandom
smtpd_tls_auth_only = yes
smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
smtp_tls_mandatory_protocols=!SSLv2,!SSLv3
smtpd_tls_protocols=!SSLv2,!SSLv3
smtp_tls_protocols=!SSLv2,!SSLv3
smtpd_relay_restrictions = check_recipient_access hash:/etc/postfix/whitelist check_recipient_access hash:/etc/postfix/recipient_access permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_unauth_pipelining reject_non_fqdn_recipient reject_unknown_recipient_domain reject_unlisted_recipient reject_invalid_hostname permit
yustas@dovefix:/etc/dovecot/conf.d$ cat /etc/postfix/master.cf | grep -v "#"
smtp      inet  n       -       -       -       -       smtpd
smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
pickup    fifo  n       -       -       60      1       pickup
         -o content_filter=
         -o receive_override_options=no_header_body_checks
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix	-	n	n	-	2	pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
smtp-amavis unix -     -       n       -       2       smtp
       -o smtp_data_done_timeout=1200
       -o smtp_send_xforward_command=yes
       -o disable_dns_lookups=yes
       -o max_use=20
127.0.0.1:10025 inet    n       -       -       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_delay_reject=no
        -o smtpd_client_restrictions=permit_mynetworks,reject
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=reject_unauth_pipelining
        -o smtpd_end_of_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o smtpd_client_connection_count_limit=0
        -o smtpd_client_connection_rate_limit=0
        -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
Yustas ★★★★
() автор топика
Ответ на: комментарий от zgen
yustas@dovefix:/etc/dovecot/conf.d$ dpkg -l | grep postfix
ii  postfix                        2.11.3-1                      amd64        High-performance mail transport agent
ii  postfix-pcre                   2.11.3-1                      amd64        PCRE map support for Postfix
ii  postfix-pgsql                  2.11.3-1                      amd64        PostgreSQL map support for Postfix
yustas@dovefix:/etc/dovecot/conf.d$ dpkg -l | grep dovecot
ii  dovecot-antispam               2.0+20130912-2                amd64        Dovecot plugins for training spam filters
ii  dovecot-core                   1:2.2.13-12~deb8u1            amd64        secure POP3/IMAP server - core files
ii  dovecot-imapd                  1:2.2.13-12~deb8u1            amd64        secure POP3/IMAP server - IMAP daemon
ii  dovecot-lmtpd                  1:2.2.13-12~deb8u1            amd64        secure POP3/IMAP server - LMTP server
rc  dovecot-managesieved           1:2.2.13-12~deb8u1            amd64        secure POP3/IMAP server - ManageSieve server
ii  dovecot-pgsql                  1:2.2.13-12~deb8u1            amd64        secure POP3/IMAP server - PostgreSQL support
ii  dovecot-pop3d                  1:2.2.13-12~deb8u1            amd64        secure POP3/IMAP server - POP3 daemon
ii  dovecot-sieve                  1:2.2.13-12~deb8u1            amd64        secure POP3/IMAP server - Sieve filters support
Yustas ★★★★
() автор топика

С плагинами всё действительно хорошо. Проблема в конфиге постфикс(main.cf):

virtual_maps = pgsql:/etc/postfix/virtual.cf
virtual_transport = dovecot
если замаппено, virtual_transport в конфиге игнорируется.
Т.е. надо либо прописать в базе заместо
+-------------+-----------+
| domain      | transport |
+-------------------------+
| example.com | virtual:  |
+-------------+-----------+
вот это:
+-------------+-----------+
| domain      | transport |
+-------------------------+
| example.com | dovecot:  |
+-------------+-----------+
либо, просто закомментить опцию virtual_maps и явно прописать virtual_transport.
Подробнее тут и тут

PS. Pinkbyte Извините за прямой каст, не знаю как вызвать рандомного модератора.
Возможно, стоит удалить портянки в трёх комментах выше.
Спасибо за внимание.

Yustas ★★★★
() автор топика
Последнее исправление: Yustas (всего исправлений: 2)
Ответ на: комментарий от Yustas

Да ладно, пусть остаётся. Главное что у тебя всё получилось :-)

У меня к слову работает вариант с virtual_transport, НО transport_maps для моих доменов(у меня он в файле, но есть мнение что и в БД будет работать - формат одинаковый) выглядит так:

example.com           :

Что собственно и означает использование транспорта по умолчанию :-)

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Что собственно и означает использование транспорта по умолчанию

Это, полагаю, и есть virtual_transport.
Ох и хитро!

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

Я немного^W серьезно ошибся, в моём случае это берется из virtual_mailbox_maps(точнее из virtual_mailbox_domains, но они по умолчанию с virtual_mailbox_maps идентичны, подробнее man postconf с сайта postfix).

Потому что default_transport ВНЕЗАПНО равен smtp

Что логично.

Но вот если указать virtual: для домена, тогда да, virtual_transport будет игнорироваться. Почему - хороший вопрос.

Скорее всего потому что virtual_transport не переопределяет то что указано в файле transport, а наоборот - то что указано в файле transport переопределяет дефолт. По крайней мере так гласит официальный ман

Но если в transport указано «не менять транспорт доставки»(пардон за тавтологию). А 'example.com :' это и есть - не менять транспорт доставки.

Предвижу вопрос - нахрена вообще это указывать, отвечаю - у меня есть там же конструкция вида '.example.com error:mail for subdomains is not deliverable'. В старом postfix матчер подразумевал под .example.com все поддомены и САМ домен в том числе. В новом от этого костыля можно уйти, но мне влом что-то делать пока всё работает(и ломаться данная конструкция не планируется, да и не должна).

А так по большому счету отдельно указывать транспорт в простейших случаях наверное и не нужно. Просто запихать список доменов в virtual_mailbox_domains, а ящики - в virtual_mailbox_maps

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.