[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Postfix Etch



Alexander Gerasiov пишет:
На Fri, 10 Nov 2006 23:10:51 +0200
Dmitriy Sirant <lex@init.net.ua> записано:
Nov 10 15:12:51 mail postfix/smtpd[10524]: NOQUEUE: reject: RCPT
from bzq-84-108-219-70.cablep.bezeqint.net[84.108.219.70]: 451
4.3.0 <heathcliff382@ojenlaege.dk>: Temporary lookup failure; from=<heathcliff382@ojenlaege.dk>
to=<some_real_client@krig.dp.ua> proto=SMTP
helo=<bzq-84-108-219-70.cablep.bezeqint.net>
А случаем не  reject_unknown_client в одном из правил у тебя? А
нет, хост резолвится... Тогда может
reject_unknown_sender_domain ? Да и фром очень на спамера похож...
Да, но ошибка то в другом... если бы спамер или хост плохой - то
ошибка была бы не Temporary lookup failure.
Если не нашел домен - да, а если искал, но DNS вернул ошибку, то
вполне себе "Temporary lookup failure", хотя в случае с DNS он
может и по другому ругаться, не помню.
Че-та мне кажется, что в вышепроцитированном куске я был прав.
Таки ты не ответил на вопрос..
Хотя, насколько я понимаю, проблема может быть еще и с каким-нибудь
запросом к mysql.
Проверь что все они корректные. Например, что алиасы правильно
работают.
Понимаешь в чем беда, если бы запросы были поломаны - то не работало
бы вообще. А так не ходит менее 1% писем причем одно и то же письмо
может быть откинуто а через минуту оно приймется и пройдет.
Если с одним и тем же письмом такая фигня, то значит либо DNS глючит,
либо к MySQL много соединений. Но судя по логам, ИМХО все же первое.

Начал по логам mysql лазить... обнаружил еще одну непонятную вещь:

В main.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-maps.cf

В mysql-virtual-maps.cf
user = ***
password = ***
dbname = statistic
table = services
select_field = CONCAT(SUBSTRING_INDEX(login,'@', -1),'/',SUBSTRING_INDEX(login,'@',1),'/Maildir/')
where_field = login
additional_conditions = AND service_id = 4
hosts = ***

В логах mysql
SELECT CONCAT(SUBSTRING_INDEX(login,'@', -1),'/',SUBSTRING_INDEX(login,'@',1),'/Maildir/') FROM services
WHERE login='init.net.ua' AND service_id = 4

Это вопрос опять таки похож на тот, куда ссылку приводили - но там лечение не указано.
В блоге по ссылке вообще что-то левое, ИМХО, к тебе никакого
отношения не имеющее.
Поидее в login должен подставлятся some-real-user@init.net.ua а не домен, причем бывает, что запрос
идет на чужой домен тоже (например yahoo.com.tw).
А virtual_alias_domains = $virtual_alias_maps
да? тогда это просто проверка того факта, что ты обслуживаешь этот
виртуальный домен.
Нет. virtual_alias_domains другой запрос, а не тот что я привел выше.
Как другой? у тебя в конфиге другого нету, значит по дефолту
virtual_alias_domains = $virtual_alias_maps и он именно проверяет
существование виртуального домена с данным именем.
(Ну или то же самое для virtual_mailbox_domains и
virtual_mailbox_maps)
Чужой домен - это попытка испоьлзовать тебя как опер-релэй (постфикс
проверяет, принимаешь ли ты для этого домена почту)
Для этого третий запрос который relay_domains вызывает
неее... при чем здесь relay_domains? сервер получает письмо на
xxx@yahoo.com - через тебя пытаются релеить - и смотрит есть ли
yahoo.com среди виртуальных доменов.

И вообще кинь уж тогда вывод postconf'а почитать, что ли...


Странно, а в выводе postconf -n есть строка
relay_domains = $relay_host
а вот строки из конфига
relay_host = proxy:mysql:/etc/postfix/mysql-relay.cf
почемуто нет. Это означает что он ее не принял ?

-n     Print parameter settings that are not left at their
built-in  default value, because they are explicitly specified in
main.cf.

postconf(1)

А в конфиге что-нить вроде relay_domains = $relay_host есть? А зачем?
Ты что-то релеишь? А никакого relay_host вроде нету, есть relayhost, у
которого совсем другой смысл.
Тогда уж сразу писать relay_domains =
proxy:mysql:/etc/postfix/mysql-relay.cf, если релеем работаешь.
Да, релеем работаю для некоторых. Пошел искать отличие между relay_host и relay_domains. Хотя relay_host - это по сути просто переменная у меня. Я почему-то решил, что я переменной присвоил где искать, а потом указал в relay_domains = $relay_host. Незнаю зачем, но уже исправил.

И вообще, ИМХО у тебя в конфиге много ненужного. Ты бы почитал
документацию, а не копировал бы полностью всякие howto, часть из
которых абсолютное legacy, а часть с ошибками.
Да, именно к этому все и идет...

reject_invalid_helo_hostname, reject_unknown_helo_hostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, reject_rbl_client
bl.spamcop.net smtpd_reject_unlisted_sender = yes
Это переформатирование сделало? Или действительно ошибка и они на
одной строке?
Переформатирование. Все в разных.
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = reject_unknown_sender_domain
Вот, похоже, что из-за этого и вылезают те lookup falure.
Postfix пытается проверить существование домена для сендера и
натыкается на ошибку в DNS. Что я и писал еще раньше.
Попробую отключить.



Reply to: