На 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, если релеем работаешь.
И вообще, ИМХО у тебя в конфиге много ненужного. Ты бы почитал
документацию, а не копировал бы полностью всякие howto, часть из
которых абсолютное legacy, а часть с ошибками.
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. Что я и писал еще раньше.