Postifx - Dovecot не может отправлять электронные письма «status = bounced (пользователь неизвестен) «

Мой почтовый сервер работал нормально на ( Debian Jessie 8.5 ). Моя установка использует Postfix 2.11.3 , Dovecot 2.2.13 , а также использование виртуальных пользователей и почтовых ящиков (стиль Maildir). Это работало отлично, пока я не захотел реализовать автоматическое создание папки нежелательной почты и отправку писем, помеченных как спам SpamAssassin 3.4.0 / Perl 5.20.2 . Это прекрасно работает. Я могу получать электронные письма между моими виртуальными доменами, а также электронные письма извне (Gmail, Yahoo и т. Д.). Я могу отправлять электронные письма между моими виртуальными доменами, размещенными на этом сервере. Но когда я пытаюсь отправить электронные письма во внешний мир (Gmail, Yahoo и т. Д.), Я получаю следующее в / var / log / syslog :

Nov  8 21:47:08 mercury postfix/smtpd[12803]: connect from localhost[127.0.0.1]
Nov  8 21:47:08 mercury postfix/smtpd[12803]: 93611814E5: client=localhost[127.0.0.1]
Nov  8 21:47:08 mercury postfix/cleanup[12805]: 93611814E5: message-id=<b319991378fc5baaa9ae1e16498ca4d5@example.com>
Nov  8 21:47:08 mercury opendkim[24011]: 93611814E5: DKIM-Signature field added (s=mail, d=example.com)
Nov  8 21:47:08 mercury postfix/qmgr[12250]: 93611814E5: from=<info@example.com>, size=6380, nrcpt=1 (queue active)
Nov  8 21:47:08 mercury spamd[738]: spamd: connection from ip6-localhost [::1]:33575 to port 783, fd 6
Nov  8 21:47:08 mercury spamd[738]: spamd: setuid to vmail succeeded
Nov  8 21:47:08 mercury spamd[738]: spamd: processing message <b319991378fc5baaa9ae1e16498ca4d5@example.com> for vmail:5000
Nov  8 21:47:08 mercury postfix/smtpd[12803]: disconnect from localhost[127.0.0.1]
Nov  8 21:47:15 mercury spamd[738]: spamd: clean message (-1.1/5.5) for vmail:5000 in 7.3 seconds, 6661 bytes.
Nov  8 21:47:15 mercury spamd[738]: spamd: result: . -1 - ALL_TRUSTED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HTML_MESSAGE,T_REMOTE_IMAGE scantime=7.3,size=6661,user=vmail,uid=5000,required_score=5.5,rhost=ip6-localhost,raddr=::1,rport=33575,mid=<b319991378fc5baaa9ae1e16498ca4d5@example.com>,autolearn=ham autolearn_force=no
Nov  8 21:47:15 mercury postfix/pipe[12806]: 93611814E5: to=<some.email@gmail.com>, relay=spamassassin, delay=7.4, delays=0.07/0/0/7.3, dsn=5.1.1, status=bounced (user unknown)
Nov  8 21:47:15 mercury postfix/cleanup[12805]: F10AB814E7: message-id=<20161109024715.F10AB814E7@fqdn.mydomain.com>
Nov  8 21:47:15 mercury postfix/qmgr[12250]: F10AB814E7: from=<>, size=8521, nrcpt=1 (queue active)
Nov  8 21:47:15 mercury postfix/bounce[12819]: 93611814E5: sender non-delivery notification: F10AB814E7
Nov  8 21:47:15 mercury postfix/qmgr[12250]: 93611814E5: removed
Nov  8 21:47:16 mercury postfix/virtual[12820]: F10AB814E7: to=<info@example.com>, relay=virtual, delay=0.02, delays=0/0.02/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Nov  8 21:47:16 mercury postfix/qmgr[12250]: F10AB814E7: removed
Nov  8 21:47:16 mercury spamd[9376]: prefork: child states: II

Итог - похоже, что Postfix не расширяет мой / var / postfix / users и / или Postfix не передает домен / пользователя в Dovecot и поэтому создает эту ошибку status = bounced (user unknown) .

Мой dovecot -n :

# 2.2.13: /etc/dovecot/dovecot.conf
# OS: Linux 3.16.0-4-amd64 x86_64 Debian 8.5
auth_verbose = yes
base_dir = /var/run/dovecot/
info_log_path = /var/log/dovecot.info
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
log_path = /var/log/dovecot
mail_home = /home/vmail/%d/%n
mail_location = maildir:~/
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave
namespace inbox {
  hidden = no
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
  subscriptions = yes
}
passdb {
  args = scheme=PLAIN username_format=%u /etc/dovecot/users
  driver = passwd-file
}
plugin {
  sieve = /etc/dovecot/sieve/default.sieve
  sieve_dir = ~/sieve
}
pop3_uidl_format = %g
postmaster_address = postmaster@${DOMAIN}
protocols = imap pop3
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service imap-login {
  inet_listener imaps {
    port = 0
  }
}
ssl = no
ssl_cert = /etc/ssl/dovecot.crt
ssl_key = /etc/ssl/dovecot.key
ssl_parameters_regenerate = 1 days
userdb {
  args = uid=vmail gid=vmail home=/home/vmail/%d/%n
  driver = static
}
userdb {
  args = uid=vmail gid=vmail home=/home/vmail/%d/%n
  driver = static
}
valid_chroot_dirs = /home/vmail/
verbose_ssl = yes
protocol lmtp {
  mail_plugins = " sieve"
}
protocol lda {
  mail_plugins = " sieve"
}

и postconf возвращает:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
home_mailbox = Maildir/
inet_interfaces = all
mailbox_command =
mailbox_size_limit = 0
milter_default_action = accept
milter_protocol = 2
mydestination = fqdn.mydomain.com, mercury, localhost.localdomain, localhost
myhostname = fqdn.mydomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
non_smtpd_milters = inet:localhost:12301
queue_directory = /var/spool/postfix
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_cert_file = /etc/ssl/dovecot.crt
smtp_tls_key_file = /etc/ssl/dovecot.key
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_milters = inet:localhost:12301
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_CApath = /etc/ssl/certs
smtpd_tls_cert_file = /etc/ssl/dovecot.crt
smtpd_tls_key_file = /etc/ssl/dovecot.key
smtpd_tls_loglevel = 1
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_security_level = may
smtpd_use_tls = yes
spamassassin_destination_recipient_limit = 1
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = /etc/postfix/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmaps
virtual_minimum_uid = 1000
virtual_uid_maps = static:5000

Я не уверен, что мне следует искать, чтобы решить эту странную проблему. Я могу отправлять электронные письма между моими виртуальными доменами, я могу получать электронные письма, но я не могу отправлять электронные письма в мир :-(

0
задан 9 November 2016 в 05:16
2 ответа

Что ж, может быть достаточно просто, но для меня в /etc/postfix/master.cf у меня было следующее:

spamassassin unix -     n   n   -   -   pipe
    flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e
    /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}

после того, как я изменил его на:

spamassassin unix -     n   n   -   -   pipe
    flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}

и перезапустил постфикс с помощью service postfix restart он начал работать :-)

0
ответ дан 4 December 2019 в 12:21

Решение 1 (не лучший способ)

Откройте свой master.cf и найдите следующие правила:

smtp       inet  n       -       y       -       -       smtpd
smtps      inet  n       -       y       -       -       smtpd
submission inet  n       -       y       -       -       smtpd

После каждого из этих правил вы будете вероятно, есть -o content_filter = spamassassin .
Это хорошо для входящих писем, но не требуется для исходящих писем. В случае, если вы используете dovecat для обработки почты, это даже не сработает, и в этом проблема.

Решение: используйте только фильтр spamassasin для входящих писем.
Вы можете сделать это, применив его только к правилу smtp , но не к smtps и представлению .
Обратной стороной этого является то, что вы не можете использовать порт 25 для отправки писем, но это проблема? Большинство интернет-провайдеров все равно блокируют его, и порт 465/587 лучше для этого.

Решение 2 (лучший способ)

В вашем файле master.cf вы удалите (или закомментируете) строки для spamassassin.

В main.cf вы добавляете следующее:

virtual_transport = lmtp:unix:private/dovecot-lmtp

В конфигурационном файле dovecot (20-lmtp.conf или dovecot.conf) вы включаете плагин sieve для трафика lmtp (вы у меня уже есть это, но я не знаю, работает ли он внутри кавычек):

protocol lmtp {
  mail_plugins = sieve
}

Это также должно быть в файле конфигурации dovecot:

protocols = imap pop3 lmtp sieve

У вас нет двух последних из них.

Локальная почта будет обрабатываться с помощью dovecot с этим решением (и сито будет выполнено), исходящие письма будут ретранслироваться.

Последняя часть этого - фильтрация спама.
Это делается с помощью milter (а не службы).

Если у вас его еще нет, установите его: apt-get install spamass-milter .
В вашем постфиксе main.cf вы включаете его, добавляя следующее:

smtpd_milters = inet:localhost:12301 unix:spamass/spamass.sock

Он должен использовать правила spamassassin, которые вы уже настроили.

3
ответ дан 4 December 2019 в 12:21

Теги

Похожие вопросы