URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 89087
[ Назад ]

Исходное сообщение
"Postfix. Почтовый клиент отваливается при получении почты."

Отправлено Hitchman , 07-Июн-10 18:01 
Добрый день.
Стоит postfix (mail_version = 2.2.9). Все отлично работает, за исключением периодических проблем при получении большого числа писем клиентов Outlook Express. Такое впечатление, что по таймауту POP3 сессия вылетает. Соединение на машинах где возникает такая проблема кк правило очень медленное. Есть ли таймауты для POP сессий в конфиге postfix. Я честно искал в инернете, но ничего не нашел..

Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Deus , 07-Июн-10 18:11 
>Добрый день.
>Стоит postfix (mail_version = 2.2.9). Все отлично работает, за исключением периодических проблем
>при получении большого числа писем клиентов Outlook Express. Такое впечатление, что
>по таймауту POP3 сессия вылетает. Соединение на машинах где возникает такая
>проблема кк правило очень медленное. Есть ли таймауты для POP сессий
>в конфиге postfix. Я честно искал в инернете, но ничего не
>нашел..
>
>Заранее спасибо.

Postfix не pop3 сервер.


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено mef , 07-Июн-10 21:19 
>Добрый день.
>Стоит postfix (mail_version = 2.2.9). Все отлично работает, за исключением периодических

уточните версию pop3 сервера.


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 07-Июн-10 23:12 
>>Добрый день.
>>Стоит postfix (mail_version = 2.2.9). Все отлично работает, за исключением периодических
>
>уточните версию pop3 сервера.

net-mail/courier-imap 4.0.1 (POP3D)
Система Gentoo 2.6.14


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 08-Июн-10 12:06 
Ребят, есть варианты что копать?

"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено daevy , 08-Июн-10 12:35 
>Ребят, есть варианты что копать?

поковыряй /etc/courier-imap/pop3d


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено mef , 08-Июн-10 13:05 
>Ребят, есть варианты что копать?

поковыряй настройки ограничивающие количество одновременных соединений в настройках почтовика или в firewall. Outlook иногда пытается создавать несколько соединений для забора почты.


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 08-Июн-10 13:22 
>>Ребят, есть варианты что копать?
>
>поковыряй настройки ограничивающие количество одновременных соединений в настройках почтовика или в firewall.
>Outlook иногда пытается создавать несколько соединений для забора почты.

MAXPERIP=4

Предлагаете увеличить? :)


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 09-Июн-10 19:32 
>MAXPERIP=4
>
>Предлагаете увеличить? :)

Увиличил, вроде действительно получше стало, спасибо огромное.


Ещё чтобы не открывать новую тему прошу помощи в одной небольшой проблеме.
Настроил Postfix таким образом, чтобы он футбол 550 ошибкой при слудующих обстоятельствах:


defer_code = 550
multi_recipient_bounce_reject_code = 550
non_fqdn_reject_code = 550
unknown_address_reject_code = 550
unknown_client_reject_code = 550
unknown_hostname_reject_code = 550
unknown_local_recipient_reject_code = 550
unknown_relay_recipient_reject_code = 550
unknown_virtual_alias_reject_code = 550
unknown_virtual_mailbox_reject_code = 550
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550

Вопрос вот в чем. Когда отправляю на несуществующий адрес, то сервер сразу отвечает 550 ошибкой и не отсылает bounce отправителю.

НО! Когда посылаю на alias, который ведет к несуществующему локальному ящику, то postfix отправляет bounce сообщение:


<well-known@domain.ru> (expanded from <POSTMASTER@domain.ru> : unknown user: "well-known@domain.ru"

...и, если сообщение было отправлено спамерами с несуществующих серверов, то вижу через mailq кучу подобных сообщений:

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
69BDC3F74C  13557    Wed Jun  9 19:05:42  MAILER-DAEMON
                                         (connect to gbrsecurity02.telesp.net.br[200.171.222.87]: Connection timed out)
                                         seciaeq7930@telesp.net.br

Вопрос в том как отвечать 550 ошибкой при отправке на несуществующий адрес через alias и запретить создавать bounce сообщения?

Спасибо.


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 09-Июн-10 21:18 
Да, стоит добавить:

smtpd_client_restrictions =
        permit_sasl_authenticated,
        permit_mynetworks,

        reject_rbl_client               dnsbl.sorbs.net
        reject_rbl_client               zen.spamhaus.org,
        reject_rbl_client               dnsbl.ahbl.org,
        reject_rbl_client               sbl.spamhaus.org,
        reject_rbl_client               cbl.abuseat.org,
        reject_rbl_client               dnsbl.sorbs.net

smtpd_recipient_restrictions =
        permit_sasl_authenticated,
        permit_mynetworks,

        reject_unverified_recipient,
        reject_unauth_destination,
        reject_unauth_pipelining,
        reject_unlisted_recipient,
        reject_non_fqdn_recipient,
        reject_non_fqdn_hostname,
        reject_non_fqdn_sender,
        reject_unknown_recipient_domain,
        reject_unknown_sender_domain,

        check_sender_access regexp:/etc/postfix/sender_access



"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 10-Июн-10 12:38 
Неужели нет никаких мыслей? :(

"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 10-Июн-10 18:15 
Раз никто отвечать не хочет, то отвечу сам :)

Похоже, что в postfix'е нет механизма проверки почтовых ящиков, на которые указавают алиасы, ведь алиасы могут вести в том числе и на другой сервер. Поэтому, если алиас существует, то postfix принимает в любом случае письмо, а потом пытается отправить на тот адрес, на который указывает алиас. Ну а bounce генерируется, так как:


RFC 5321:

If an SMTP server has accepted the task of relaying
the mail and later finds that the destination is incorrect
or that the mail cannot be delivered for some other reason,
then it MUST construct an "undeliverable mail" notification
message and send it to the originator of the undeliverable
mail (as indicated by the reverse-path).

Отключить подобного рода NDR можно, фильтруя письма от MAILER-DAEMON:


main.cf => internal_mail_filter_classes = bounce
header_checks => /^From: MAILER-DAEMON/ DISCARD "Причина отказа"

Но лучше этого не делать, ибо нужно придерживаться стандартов RFC.


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено ALex_hha , 11-Июн-10 17:28 
>Раз никто отвечать не хочет, то отвечу сам :)
>
>Похоже, что в postfix'е нет механизма проверки почтовых ящиков, на которые указавают
>алиасы, ведь алиасы могут вести в том числе и на другой
>сервер. Поэтому, если алиас существует, то postfix принимает в любом случае
>письмо, а потом пытается отправить на тот адрес, на который указывает
>алиас.

Да что ты говоришь

# telnet 192.168.10.2 25
Trying 192.168.10.2...
Connected to 192.168.10.2 (192.168.10.2).
Escape character is '^]'.
220 mail.vmware.local ESMTP
helo gw2.vmware.local
250 mail.vmware.local
mail from:<root@vmware.local>
250 2.1.0 Ok
rcpt to:<user1@vmware.local>
550 5.1.1 <user1@vmware.local>: Recipient address rejected: undeliverable address: host mail.domain.com[xxx.xxx.xxx.xxx] said: 511 sorry, no mailbox here by that name (#5.1.1 - chkuser) (in reply to RCPT TO command)
quit
221 2.0.0 Bye
Connection closed by foreign host.


# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
local_recipient_maps = unix:passwd.byname $alias_maps $virtual_alias_maps
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = localhost.$mydomain, localhost, $mydomain
mydomain = vmware.local
myhostname = mail.vmware.local
mynetworks = 127.0.0.0/8
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
sample_directory = /usr/share/doc/postfix-2.3.3/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination reject_unlisted_recipient reject_unverified_recipient
smtpd_reject_unlisted_recipient = yes
unknown_local_recipient_reject_code = 550
unverified_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual

# cat /etc/postfix/virtual
user1 nonexistuser@domain.com

ЧЯДНТ?

Понятно что в случае с mail.ru например этот номер не прокатит, так как mxs.mail.ru всегда говорит, что пользователь существует. Но в общем случае такая схема работает


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 11-Июн-10 19:18 
Хм.. В чем мой тогда косяк?
Вот мой конфиг:

2bounce_notice_recipient = postmaster
alias_database = hash:/etc/mail/aliases
alias_maps = hash:/etc/mail/aliases
anvil_rate_time_unit = 60s
bounce_queue_lifetime = 3h
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
debug_peer_level = 1
default_destination_concurrency_limit = 20
defer_code = 550
home_mailbox = .maildir/
html_directory = no
inet_interfaces = all
local_destination_concurrency_limit = 2
local_recipient_maps = $virtual_mailbox_maps
local_transport = virtual
mail_owner = postfix
mailbox_size_limit = 104857600
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
maps_rbl_reject_code = 554
maximal_queue_lifetime = 2d
message_size_limit = 28000000
mydestination = $myhostname localhost.$mydomain $mydomain
mydomain = domain.ru
myhostname = mail.$mydomain

mynetworks =
127.0.0.0/8        
xxx.xxx.xxx.xxx/32

myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
non_fqdn_reject_code = 550
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.1.5-r2/readme
relay_domains = $transport_maps
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop

smtp_tls_loglevel = 1
smtpd_banner = $myhostname mail server
smtpd_client_connection_rate_limit     = 100
smtpd_client_event_limit_exceptions =
smtpd_client_message_rate_limit     = 100
smtpd_client_recipient_rate_limit     = 100

smtpd_client_restrictions =
            permit_sasl_authenticated,          
            permit_mynetworks,      
        
            reject_rbl_client    dnsbl.sorbs.net,
            reject_rbl_client    zen.spamhaus.org,          
            reject_rbl_client    dnsbl.ahbl.org,        
            reject_rbl_client    sbl.spamhaus.org,      
            reject_rbl_client    cbl.abuseat.org,
            reject_rbl_client    dnsbl.sorbs.net

smtpd_error_sleep_time = ${stress?0}${stress:10s}
smtpd_hard_error_limit = ${stress?3}${stress:20}

smtpd_recipient_restrictions =
            permit_sasl_authenticated,      
            permit_mynetworks,      
            check_recipient_access regexp:/etc/postfix/recipient_access,    
            
            reject_unverified_recipient,            
            reject_unauth_destination,      
            reject_unauth_pipelining,        
            reject_unlisted_recipient,        
            reject_non_fqdn_recipient,
            reject_non_fqdn_hostname,        
            reject_non_fqdn_sender,        
            reject_unknown_recipient_domain,        
            reject_unknown_sender_domain,            
            
            check_sender_access regexp:/etc/postfix/sender_access,

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
smtpd_soft_error_limit = 2
soft_bounce = no
strict_rfc821_envelopes = yes
transport_maps = hash:/etc/postfix/transport

unknown_address_reject_code            = 550
unknown_client_reject_code            = 550
unknown_hostname_reject_code            = 550
unknown_local_recipient_reject_code        = 550
unknown_relay_recipient_reject_code        = 550
unknown_virtual_alias_reject_code        = 550
unknown_virtual_mailbox_reject_code        = 550
unverified_recipient_reject_code        = 550
unverified_sender_reject_code            = 550

virtual_alias_maps = mysql:/etc/postfix/sql/aliases.cf
virtual_gid_maps = static:207
virtual_mailbox_base = /data/mail
virtual_mailbox_maps = mysql:/etc/postfix/sql/users.cf
virtual_uid_maps = static:207




"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено ALex_hha , 12-Июн-10 00:40 
> local_recipient_maps = $virtual_mailbox_maps

не надо так делать, читаем http://www.postfix.org/ADDRESS_CLASS_README.html

> Хм.. В чем мой тогда косяк?

реальные данные и лог показывай


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 12-Июн-10 01:50 
>реальные данные и лог показывай

Есть алиас aaa@domain.ru => bbb@domain.ru
Почтового ящика bbb@domain.ru не существует. Postfix принимает это письмо и сразу же генерирует NDR сообщение отправителю:


<bbb@domain.ru> (expanded from <aaa@domain.ru>): unknown user: "bbb@domain.ru"

Вот лог:


Jun 12 01:42:00 hostname postfix/smtpd[6852]: 4C44A64B85C: client=unknown[10.10.10.10], sasl_method=LOGIN, sasl_username=sender@domain.ru
Jun 12 01:42:00 hostname postfix/cleanup[6893]: 4C44A64B85C: message-id=<98671406.20100612014159@domain.ru>
Jun 12 01:42:00 hostname postfix/qmgr[6624]: 4C44A64B85C: from=<sender@domain.ru>, size=633, nrcpt=1 (queue active)
Jun 12 01:42:00 hostname postfix/virtual[6895]: 4C44A64B85C: to=<bbb@domain.ru>, orig_to=<aaa@domain.ru>, relay=virtual, delay=0, status=bounced (unknown user: "bbb@domain.ru")
Jun 12 01:42:00 hostname postfix/qmgr[6624]: 4C44A64B85C: removed

Это все в пределах одного домена domain.ru, я уж молчу когда алиас ведет на внешний сервер.

P.s.: ящики и алиасы создаю через postfixadmin.


>> local_recipient_maps = $virtual_mailbox_maps
>не надо так делать, читаем http://www.postfix.org/ADDRESS_CLASS_README.html

Прочитал, но не нашел почему "не надо". Будьте любезны, посоветуйте как по-вашему надо? Версия postfix 2.2.9.

Спасибо.


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено ALex_hha , 12-Июн-10 17:59 
>>реальные данные и лог показывай
>
>Есть алиас aaa@domain.ru => bbb@domain.ru
>Почтового ящика bbb@domain.ru не существует. Postfix принимает это письмо и сразу же
>генерирует NDR сообщение отправителю:
>
 
><bbb@domain.ru> (expanded from <aaa@domain.ru>): unknown user: "bbb@domain.ru"
>

я же попросил реальные данные!!! Сервер domain.ru на этапе smtp сессии сообщает о не существовании почтового ящика?

>[оверквотинг удален]
>Jun 12 01:42:00 hostname postfix/smtpd[6852]: 4C44A64B85C: client=unknown[10.10.10.10], sasl_method=LOGIN, sasl_username=sender@domain.ru
>Jun 12 01:42:00 hostname postfix/cleanup[6893]: 4C44A64B85C: message-id=<98671406.20100612014159@domain.ru>
>Jun 12 01:42:00 hostname postfix/qmgr[6624]: 4C44A64B85C: from=<sender@domain.ru>, size=633, nrcpt=1 (queue active)
>Jun 12 01:42:00 hostname postfix/virtual[6895]: 4C44A64B85C: to=<bbb@domain.ru>, orig_to=<aaa@domain.ru>, relay=virtual, delay=0, status=bounced (unknown user: "bbb@domain.ru")
>Jun 12 01:42:00 hostname postfix/qmgr[6624]: 4C44A64B85C: removed
>
>

>
>Это все в пределах одного домена domain.ru, я уж молчу когда алиас
>ведет на внешний сервер.

отлично конечно, а нечего, что пользователь прошел аутентификацию и до правил reject_unverified_recipient и reject_unlisted_recipient дело просто не доходит?


>Прочитал, но не нашел почему "не надо". Будьте любезны, посоветуйте как по-вашему
>надо? Версия postfix 2.2.9.

не надо путать виртуальные классы адресов и локальные


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 12-Июн-10 21:41 
>>> я же попросил реальные данные!!!

А чем вам приведенные мною данные не устраивают? Я не хочу на весь интернет публиковать свой почтовый сервер.. Или вы что-то другое подразумеваете под "реальными данными"?

>>> Сервер domain.ru на этапе smtp сессии сообщает о несуществовании почтового ящика?

В привиденном мною реальном примере (заменено только имя домена) сервер принимает без ошибок письмо.
В других случаях, когда:
1. Пытаются отправить на несуществующий ящик
2. Пытаются отправить на несуществующий алиас
...cервер, согласно конфигу выдает 500 ошибку после RCPT.

>>> не надо путать виртуальные классы адресов и локальные

как по вашему правильно на примере конфига..

>>> пользователь прошел аутентификацию и до правил reject_unverified_recipient и reject_unlisted_recipient дело просто не доходит?

насчет этого спасибо, переставил местами - на алиасы тоже выдает 550 ошибку.


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 13-Июн-10 02:28 
Изменил порядок, можете подсказать, такая последовательность приемлема? Какие коррективы лучше внести? Стоит ли дополнительно прописывать эти ограничения:
smtpd_helo_restrictions,
smtpd_sender_restrictions


smtpd_client_restrictions =
                                permit_sasl_authenticated,
                                permit_mynetworks,

                                reject_unknown_client,

                                check_sender_access regexp:/etc/postfix/sender_access,

                                reject_rbl_client               dnsbl.sorbs.net,
                                reject_rbl_client               zen.spamhaus.org,
                                reject_rbl_client               dnsbl.ahbl.org,
                                reject_rbl_client               sbl.spamhaus.org,
                                reject_rbl_client               cbl.abuseat.org,
                                reject_rbl_client               dnsbl.sorbs.net

smtpd_recipient_restrictions =
                                reject_unlisted_recipient,
                                reject_unverified_recipient,

                                check_recipient_access regexp:/etc/postfix/recipient_access,

                                permit_sasl_authenticated,
                                permit_mynetworks,

                                reject_unknown_recipient_domain,
                                reject_unauth_destination,
                                reject_unauth_pipelining,
                                reject_non_fqdn_recipient,
                                reject_non_fqdn_hostname,
                                reject_non_fqdn_sender,
                                reject_unknown_sender_domain



"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено PavelR , 13-Июн-10 08:54 

А самому подумать над последовательностью и смыслом проверок - никак ?

например, нафиг разрешать permit_sasl_authenticated до reject_unknown_recipient_domain,
reject_non_fqdn_recipient, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_unknown_sender_domain ?

>[оверквотинг удален]
>         permit_sasl_authenticated,
>         permit_mynetworks,
>         reject_unknown_recipient_domain,
>         reject_unauth_destination,
>         reject_unauth_pipelining,
>         reject_non_fqdn_recipient,
>         reject_non_fqdn_hostname,
>         reject_non_fqdn_sender,
>         reject_unknown_sender_domain
>


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено Hitchman , 13-Июн-10 13:01 
>[оверквотинг удален]
>>         permit_sasl_authenticated,
>>         permit_mynetworks,
>>         reject_unknown_recipient_domain,
>>         reject_unauth_destination,
>>         reject_unauth_pipelining,
>>         reject_non_fqdn_recipient,
>>         reject_non_fqdn_hostname,
>>         reject_non_fqdn_sender,
>>         reject_unknown_sender_domain
>>

Я то подумал....

например, нафиг разрешать permit_sasl_authenticated до:

1. reject_unknown_recipient_domain
Для того чтобы авторизованные пользователи могли слать внутридоменно без указания "@domain.ru"

2. reject_non_fqdn_recipient
Для того чтобы авторизованные пользователи могли слать внутридоменно без указания "@domain.ru"  

3. reject_non_fqdn_hostname
У вас все машины в сети в HELO пишут имя хоста по FQDN??


"Postfix. Почтовый клиент отваливается при получении почты."
Отправлено PavelR , 13-Июн-10 19:29 
1-2 - ну, если это вам реально нужно, хотя ИМХО плохую привычку воспитаете.

>3. reject_non_fqdn_hostname
>У вас все машины в сети в HELO пишут имя хоста по
>FQDN??

ошибся при копировании, подразумевал reject_non_fqdn_sender