Назад | Перейти на главную страницу

Почтовый сервер, создающий почтовые аккаунты при «Неизвестном пользователе в таблице виртуального почтового ящика» при локальной доставке

Я использую старый почтовый сервер Postfix и Courier с виртуальными доменами. Недавно я испытал, что локальная доставка (с использованием веб-почты) в несуществующий почтовый ящик приведет к созданию этого фактического почтового ящика - например, /var/vmail/domain/notexistinguser - содержащий электронное письмо. На мой взгляд, это письмо должно было быть возвращено отправителю. Электронная почта из внешней системы вызывает отказы.

Я не совсем уверен, связана ли эта проблема с Postfix, Courier или другими службами, работающими на моем сервере. Поэтому я готов отправить любую конфигурацию, журналы и т. Д., Которые могут вам понадобиться, чтобы помочь мне решить эту проблему.

Дополнительная информация

Вывод postconf -n (имена хостов заменены в целях конфиденциальности):

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
anvil_rate_time_unit = 43200
append_dot_mydomain = no
biff = no
body_checks = regexp:/etc/postfix/body_checks
bounce_queue_lifetime = 1
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
content_filter = amavis:[127.0.0.1]:10024
header_checks = regexp:/etc/postfix/header_checks
html_directory = /usr/share/doc/postfix/html
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
maximal_queue_lifetime = 1
message_size_limit = 0
mime_header_checks = regexp:/etc/postfix/mime_header_checks
mydestination = example.com, localhost, localhost.localdomain
myhostname = example.com
mynetworks = 127.0.0.0/8 [::1]/128
myorigin = /etc/mailname
nested_header_checks = regexp:/etc/postfix/nested_header_checks
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
receive_override_options = no_address_mappings
recipient_delimiter = +
relay_domains = mysql:/etc/postfix/mysql-virtual_relaydomains.cf
relay_recipient_maps = mysql:/etc/postfix/mysql-virtual_relayrecipientmaps.cf
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_client_connection_count_limit = 5
smtpd_client_connection_rate_limit = 1000
smtpd_client_message_rate_limit = 1000
smtpd_client_recipient_rate_limit = 1000
smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
smtpd_error_sleep_time = 2s
smtpd_hard_error_limit = 20
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_non_fqdn_sender, check_policy_service inet:127.0.0.1:10023, reject_rbl_client cbl.abuseat.org, reject_rbl_client bl.spamcop.net, reject_rbl_client zen.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf
smtpd_soft_error_limit = 10
smtpd_tls_CAfile = /etc/ssl/local/ca-certs
smtpd_tls_cert_file = /etc/ssl/local/certificate
smtpd_tls_key_file = /etc/ssl/local/key
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_transport = maildrop
virtual_uid_maps = static:5000

Отправка письма из командной строки дает мне следующее в журнале почты (имя хоста и домен заменены для конфиденциальности):

Jan 26 13:33:01 myhost postfix/smtpd[25786]: 0F29E41134A62: client=localhost[127.0.0.1]
Jan 26 13:33:01 myhost postfix/cleanup[8531]: 0F29E41134A62: message-id=<20150126123257.A808940E253C9@example.com>
Jan 26 13:33:01 myhost postfix/qmgr[26331]: 0F29E41134A62: from=<root@example.com>, size=755, nrcpt=1 (queue active)
Jan 26 13:33:01 myhost amavis[18765]: (18765-09) Passed CLEAN, <root@example.com> -> <unknown01@example.com>, Message-ID: <20150126123257.A808940E253C9@example.com>, mail_id: jgU7IihKWNMv, Hits: 1.044, size: 310, queued_as: 0F29E41134A62, 3470 ms
Jan 26 13:33:01 myhost postfix/smtp[14895]: A808940E253C9: to=<unknown01@example.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=3.5, delays=0.04/0/0/3.5, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=18765-09, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 0F29E41134A62)
Jan 26 13:33:01 myhost postfix/qmgr[26331]: A808940E253C9: removed
Jan 26 13:33:02 myhost postfix/pipe[10437]: 0F29E41134A62: to=<unknown01@example.com>, relay=maildrop, delay=1.3, delays=0.09/0/0/1.2, dsn=2.0.0, status=sent (delivered via maildrop service)
Jan 26 13:33:02 myhost postfix/qmgr[26331]: 0F29E41134A62: removed

Просмотр /var/vmail/example.com показывает, что пользователь был создан с той же меткой времени. Этот пользователь НЕ существовал до отправки тестового письма.

drwx------   5 vmail vmail    61 2015-01-26 13:33 unknown01

Одним из способов решения проблемы является изменение конфигурации метода доставки с (отправки) почты на SMTP с помощью localhost.

  • На roundcube вы можете изменить конфигурацию с помощью

    $config['smtp_server'] = 'localhost';
    
  • На Squirrelmail используйте conf.pl сценарий. Войти Server Settings затем выберите SMTP в Sendmail or SMTP вариант с конфигурацией сервера localhost и портом 25.


Этот случай может произойти, потому что при доставке почты postfix отвечал за проверку существования пользователя. Сам Maildrop не может выполнить проверку существования пользователя за вас. К сожалению, эта проверка была выполнена, когда электронное письмо было доставлено через SMTP не mail команда. Причина в том mail команда вызывалась только в некоторых процессах на localhost, поэтому postfix будет ей доверять.

Специальная опция для включения / выключения проверки существования пользователя: smtpd_reject_unlisted_recipient. Вы можете прочитать документацию на официальная документация.

Ссылки: эта тема