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

Исходное сообщение
"не доходят письма"

Отправлено andlis , 13-Мрт-09 11:42 
Проблема такая: на сайте, написанном на php есть форма для отправки писем пользователям. Судя по логам на моем сервере, письма людям уходят (Status: Sent), но никому (кроме пользователей, живущих на том же сервере) не приходят. Сначала думал на конечных серверах срезают спам-фильтры. Но нет, проверил один - там нет никаких логов о приходе письма. Есть мысли куда копать?
Вот заголовок такого письма (копия пришла ко мне)

Return-Path: <apache@xxx.ru>
Received: from xxx.ru (localhost.localdomain [127.0.0.1])
by xxx.ru (8.13.4/8.13.4) with ESMTP id n2BFS7DO018762
for <andlis@xxx.ru>; Wed, 11 Mar 2009 18:28:07 +0300
Received: (from apache@localhost)
by xxx.ru (8.13.4/8.13.4/Submit) id n2BFS7eI018761;
Wed, 11 Mar 2009 18:28:07 +0300
Date: Wed, 11 Mar 2009 18:28:07 +0300
Message-Id: <200903111528.n2BFS7eI018761@xxx.ru>
To: andlis@xxx.ru
Subject: RJT newsletter
From: "RJT" <andlis@xxx.ru>
Reply-To: <andlis@xxx.ru>
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: PHP/5.0.4
Content-Type: text/html; charset=windows-1251
Content-Transfer-Encoding: 8bit

Вижу глазами несовпадение Return-Path: и From:
Это конечно плохо. Но как бороться силами php честно говоря не знаю.
HELP!!


Содержание

Сообщения в этом обсуждении
"не доходят письма"
Отправлено ALex_hha , 13-Мрт-09 11:48 
Покажи лог МТА

З.Ы.
return path и From и не обязаны совпадать


"не доходят письма"
Отправлено andlis , 13-Мрт-09 12:24 
>Покажи лог МТА
>
>З.Ы.
>return path и From и не обязаны совпадать

Ну не обязаны!.. Но я же не знаю как где спам-фильтры настроены?

С логом не очень просто, нагрузка на сервер большая, логов мульон. Попробую по порядку. Во-первых на sendmail стоит настройка (пишу из виндов, наизусть синтаксис не помню) фильтровать по адресу отправителя. Relay_from: ***. И честно говоря, apache там не означен как разрешенный адрес.
О сием говорит и следующий лог (специально только что инспирированный - это я честно в Outlook Express создал пользователя апач ну и отправил письмо):
Mar 13 12:01:58 zmmu sendmail[6223]: n2D91weS006223: ruleset=check_rcpt, arg1=<tesak@yyyy.ru>, relay=[192.168.1.27], reject=550 5.7.1 <tesak@yyy.ru>... Relaying denied. IP name lookup failed [192.168.1.27]
Mar 13 12:01:58 zmmu sendmail[6223]: n2D91weS006223: from=<apache@xxx.ru>, size=0, class=0, nrcpts=0, proto=SMTP, daemon=MTA, relay=[192.168.1.27]

Теперь отправляю через php

Mar 13 12:03:45 zmmu sendmail[6311]: n2D93juW006311: from=apache, size=6793, class=0, nrcpts=1, msgid=<200903130903.n2D93juW006311@xxx.ru>, relay=apache@localhost
Mar 13 12:03:53 zmmu sendmail[6311]: n2D93juW006311: to=aborisen@yyy.ca, ctladdr=apache (48/48), delay=00:00:08, xdelay=00:00:08, mailer=relay, pri=36793, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (n2D93jk4006313 Message accepted for delivery)

Тихо мирно, никакой ругани. Письмо умерло.


"не доходят письма"
Отправлено andlis , 13-Мрт-09 12:59 
>Покажи лог МТА

Ну вот говорил мульон логов! Каюсь, посмотрел только на один pid, а их на письмо два.
Такой лог:
Mar 13 12:27:46 zmmu sendmail[9062]: n2D9RkaE009062: from=apache, size=6793, class=0, nrcpts=1, msgid=<200903130927.n2D9RkaE009062@xxx.ru>, relay=apache@localhost
Mar 13 12:27:46 zmmu sendmail[9063]: n2D9RkKE009063: from=<apache@xxx.ru>, size=7018, class=0, nrcpts=1, msgid=<200903130927.n2D9RkaE009062@xxx.ru>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]

Mar 13 12:27:54 zmmu sendmail[9063]: n2D9RkKE009063: discarded
Mar 13 12:27:54 zmmu sendmail[9062]: n2D9RkaE009062: to=aborisen@yyy.ca, ctladdr=apache (48/48), delay=00:00:08, xdelay=00:00:08, mailer=relay, pri=36793, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (n2D9RkKE009063 Message accepted for delivery)

Ну вроде ясно - отлуп.
Не ясно совсем почему сначала отлуп, а потом Sent... Получается первая запись [9062] он переписывает apache@localhost в apache@xxx.ru? А потом [9063] пытается послать письмо aborisen@yyy.ca и получает отлуп?


"не доходят письма"
Отправлено ALex_hha , 13-Мрт-09 13:56 
А при чем тут тогда postfix, если у вас используется sendmail?!!!

"не доходят письма"
Отправлено Medlar , 13-Мрт-09 14:20 
>Mar 13 12:27:46 zmmu sendmail[9062]: n2D9RkaE009062: from=apache, size=6793, class=0, nrcpts=1, msgid=<200903130927.n2D9RkaE009062@xxx.ru>, relay=apache@localhost
>Mar 13 12:27:46 zmmu sendmail[9063]: n2D9RkKE009063: from=<apache@xxx.ru>, size=7018, class=0, nrcpts=1, msgid=<200903130927.n2D9RkaE009062@xxx.ru>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
>
>Mar 13 12:27:54 zmmu sendmail[9063]: n2D9RkKE009063: discarded
>Mar 13 12:27:54 zmmu sendmail[9062]: n2D9RkaE009062: to=aborisen@yyy.ca, ctladdr=apache (48/48), delay=00:00:08, xdelay=00:00:08, mailer=relay,
>pri=36793, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (n2D9RkKE009063 Message accepted for delivery)
>Не ясно совсем почему сначала отлуп, а потом Sent...
>Получается первая запись
>[9062] он переписывает apache@localhost в apache@xxx.ru?

Не получается.
При отправке письма непосредственно с сервера sendmail пишет в лог 4 строки, если все нормально.
Покажите лог так egrep "n2D9RkaE009062|n2D9RkKE009063" maillog

>А при чем тут тогда postfix, если у вас используется sendmail?!!!

А при том, что сегодня пятница тринадцатое :)


"не доходят письма"
Отправлено andlis , 13-Мрт-09 16:27 
>>А при чем тут тогда postfix, если у вас используется sendmail?!!!

Какой postfix, матушки??? Не было никакого постфикса!

>Покажите лог так egrep "n2D9RkaE009062|n2D9RkKE009063" maillog

Так я же привел как раз! См выше.


"не доходят письма"
Отправлено Medlar , 13-Мрт-09 17:19 
>Какой postfix, матушки??? Не было никакого постфикса!

Ну что вы так реагируете ... Я ж говорю, пятница 13 ...
Сегодня вместо sendmail чертики могут привидеться :)

>>Покажите лог так egrep "n2D9RkaE009062|n2D9RkKE009063" maillog
>Так я же привел как раз! См выше.

Видела. Хотелось точного ответа именно по грепу, ну да ладно ...

Теперь egrep "yyy.ca|xxx.ru" /etc/mail/access
и я думаю, все станет ясно.

То, что вы видите в логе Sent, не имеет отношения к отправке письма за пределы сервера.
В дистрибутиве есть файл SECURITY. Так вот эффект двойной записи при отправке почты непосредственно с сервера имеет отношение к тому, что там написано, и в действительности
имеет значение не запись
Mar 13 12:27:54 zmmu sendmail[9062]: n2D9RkaE009062: to=aborisen@yyy.ca, ctladdr=apache (48/48), delay=00:00:08, xdelay=00:00:08, mailer=relay,
>pri=36793, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (n2D9RkKE009063 Message accepted for delivery)

(обратите внимание - mailer=relay, а relay=[127.0.0.1] [127.0.0.1], это означает,
что письмо пока что попало в /var/spool/clientmqueue)

а вот эта запись - это окончательное решение
Mar 13 12:27:54 zmmu sendmail[9063]: n2D9RkKE009063: discarded
Ну да, напрягает порядок расположения записей в этом случае, но это уже вопрос к разработчикам :)

Такое положение вещей имеет место с 8.12 версии, то есть с 2002 г.


"не доходят письма"
Отправлено andlis , 13-Мрт-09 17:32 
>Видела. Хотелось точного ответа именно по грепу, ну да ладно ...
>

Mar 13 17:00:38 zmmu sendmail[5518]: n2DE0csd005518: from=apache, size=6793, class=0, nrcpts=1, msgid=<200903131400.n2DE0csd005518@xxx.ru>, relay=apache@localhost
Mar 13 17:00:38 zmmu sendmail[5519]: n2DE0ccT005519: from=<apache@xxx.ru>, size=7018, class=0, nrcpts=1, msgid=<200903131400.n2DE0csd005518@xxx.ru>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Mar 13 17:00:46 zmmu sendmail[5519]: n2DE0ccT005519: discarded
Mar 13 17:00:46 zmmu sendmail[5518]: n2DE0csd005518: to=aborisen@yyy.ca, ctladdr=apache (48/48), delay=00:00:08, xdelay=00:00:08, mailer=relay, pri=36793, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (n2DE0ccT005519 Message accepted for delivery)

>Теперь egrep "yyy.ca|xxx.ru" /etc/mail/access
>и я думаю, все станет ясно.

Запись (хоть я и не греп) выглядит так:
From: apache@xxx.ru   Relay
Записей
From: apache@localhost Relay
и
From: aborisen@yyy.ca   Relay
Конечно нет. По крайней мере второй (я надеюсь) не пользуется моим сервером для отправки.


>[оверквотинг удален]
>имеет значение не запись
>Mar 13 12:27:54 zmmu sendmail[9062]: n2D9RkaE009062: to=aborisen@yyy.ca, ctladdr=apache (48/48), delay=00:00:08, xdelay=00:00:08, mailer=relay,
>
>>pri=36793, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (n2D9RkKE009063 Message accepted for delivery)
>
>(обратите внимание - mailer=relay, а relay=[127.0.0.1] [127.0.0.1], это означает,
>что письмо пока что попало в /var/spool/clientmqueue)
>
>а вот эта запись - это окончательное решение
>Mar 13 12:27:54 zmmu sendmail[9063]: n2D9RkKE009063: discarded

Да, это я понимаю..


"не доходят письма"
Отправлено andlis , 13-Мрт-09 18:03 
Ага!! Вашими молитвами дошел до следующего.
Вследствие каких-то моих политик (ох если бы помнить все это) sendmail не позволяет отправлять с localhost.localdomain письма наружу.

Вижу 2 способа решения проблемы (поправьте)
либо разрешить отправлять локальную почту наружу (помнить бы еще как это)
либо каким-то образом заставить php-скрипт отправлять почту от имени реального юзера. Как сделать - еще более туманно.
Все так?


"не доходят письма"
Отправлено Medlar , 13-Мрт-09 18:13 
>Ага!! Вашими молитвами

:)  :)  :)

>Вследствие каких-то моих политик (ох если бы помнить все это) sendmail не
>позволяет отправлять с localhost.localdomain письма наружу.

Ага, как раз собираюсь попросить ваш конфиг&access
У вас 127.0.0.1 RELAY в access или просто 127.0.0.1 в relay-domains имеется?

>Вижу 2 способа решения проблемы (поправьте)
>либо разрешить отправлять локальную почту наружу (помнить бы еще как это)
>либо каким-то образом заставить php-скрипт отправлять почту от имени реального юзера. >Как  сделать - еще более туманно.
>Все так?

Будем думать ...



"не доходят письма"
Отправлено andlis , 13-Мрт-09 18:19 
>Ага, как раз собираюсь попросить ваш конфиг&access
>У вас 127.0.0.1 RELAY в access или просто 127.0.0.1 в relay-domains имеется?

Сдается мне нет. Сейчас поимею и скажу результат.
Пробовал добавить
From:apache@localhost  RELAY
это не помогает.
Подлая память подсказывает, что в sendmail.cf а еще честнее в sendmail.mc есть опции как раз вырубающие разные способы пересылки почты. Возможно способ с localhost -> наружу как раз нужно включать специально.


"не доходят письма"
Отправлено andlis , 13-Мрт-09 18:22 
я жутко извиняюсь,
может быть есть в оперативной памяти информация...
можно из командной строки отправить через sendmail письмо от имени некоего пользователя?
Что то не ищутся парметры командной строки sendmail...

"не доходят письма"
Отправлено Medlar , 13-Мрт-09 18:34 
вы об этом?
http://www.anrb.ru/linux/sendmail_tips.html#4

"не доходят письма"
Отправлено andlis , 13-Мрт-09 18:50 
>вы об этом?
>http://www.anrb.ru/linux/sendmail_tips.html#4

Вероятно да! Спасибо.

Идею про
>У вас 127.0.0.1 RELAY в access или просто 127.0.0.1 в relay-domains имеется?

придется отбросить.
127.0.0.1 RELAY в access быть не может - там проверка по адресам.
127.0.0.1 в relay-domains теперь имеется. ТОлку чуть :((


"не доходят письма"
Отправлено Medlar , 13-Мрт-09 18:59 
мне не понятно, почему у вас discard не сопровождается ruleset=check_(rcpt|mail|relay)
как это должно было бы происходить в случае отказа на этих этапах smtp-диалога

не прикручены ли у вас через milter какие-нить доп. фильтры?


"не доходят письма"
Отправлено andlis , 13-Мрт-09 19:05 
>не прикручены ли у вас через milter какие-нить доп. фильтры?

прикручены.

divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
divert(0)dnl
VERSIONID(`@(#)zmmu.mc')
OSTYPE(`linux')dnl
define(`confDOMAIN_NAME', `xxx.ru')dnl
CLIENT_OPTIONS(`Family=inet,Address=xxx.xxx.xxx.xxx`)dnl
## KASPERSKY ANTI-SPAM BEGIN
INPUT_MAIL_FILTER(`kasfilter',`S=local:/var/run/kas-milter.socket, T=C:10s;S:20s;R:30s')
define(`confINPUT_MAIL_FILTERS',`kasfilter')
define(`confMILTER_LOG_LEVEL',`1')
## KASPERSKY ANTI-SPAM END
FEATURE(`access_db')dnl
FEATURE(`relay_mail_from')dnl
MAILER(local)dnl
MAILER(smtp)dnl
define(`confMAILER_NAME', `ZMMUMAILER-DAEMON')dnl
define(`confTO_QUEUERETURN', `15d')dnl
define(`confTO_QUEUEWARN', `1d')dnl
define(`confMAX_MESSAGE_SIZE', `10000000')

Это спам фильтр от Касперского и ручная проверялка релея (ой мама!! - покопаю). Но они всегда! и честно! пишут когда режут чего..

Kstorage macro

KNOSPAM01 regex -a@MATCH yahoo.com|google.com|192\.168\.1|arsalon.net|msu.ru
KSPAM7 regex -a@MATCH [0-9]+[._-]+[0-9]+[._-]+[0-9]+[._-]+[0-9]+[._-]+.*\[.+\]|^\[.+\]|chello.*chello\.pl
KSPAM8 regex -a@MATCH ^dsl.*\..*\..*|[ax]dsl.*\..*\..*|client.*\..*\..*|cable.*\..*\..*|pool.*\..*\..*|dial.*\..*\..*|ppp.*\..*\..*|dslam.*\..*\..*|node.*\-.*\-.*

LOCAL_RULESETS

SLocal_check_relay
R$*            $: $(NOSPAM01 $&_ $)
R@MATCH            $@ OK

R$*            $: $(SPAM7 $&_ $)
R@MATCH            $#error $: 553 Sorry, Your relay looks like SPAM7-relay: $&_. If not, please contact the postmaster@zmmu.msu.ru via another relay-ip.

SLocal_check_relay
R$*            $: $(SPAM8 $&_ $)
R@MATCH            $#error $: 553 Sorry, Your relay looks like SPAM-relay: $&_. If not, please contact the postmaster@zmmu.msu.ru via another relay-ip.



"не доходят письма"
Отправлено Medlar , 13-Мрт-09 19:25 
у меня к вашему конфигу есть вопросы, но времени сейчас разбирать его нет

Как насчет того, чтобы увеличить уровень логирования и для sendmail и для milter
1 - это сурово :)

define(`confLOG_LEVEL',`15')
define(`confMILTER_LOG_LEVEL',`18')
подробности по уровням в op.me


"не доходят письма"
Отправлено andlis , 13-Мрт-09 19:33 
>у меня к вашему конфигу есть вопросы, но времени сейчас разбирать его
>нет

ну я думаю!

>Как насчет того, чтобы увеличить уровень логирования и для sendmail и для
>milter
>1 - это сурово :)
>
>define(`confLOG_LEVEL',`15')
>define(`confMILTER_LOG_LEVEL',`18')
>подробности по уровням в op.me

Ну в данный момент это вряд ли поможет...
ТОлько что освоил отправку от другого пользователя. Скоро узнаем поможет ли это..


"не доходят письма"
Отправлено andlis , 13-Мрт-09 20:21 
Medlar, спасибо огромное!

Логи я не трогал, но сделал kas3 stop
Как, каким образом эта пакость съедала все письма?
В общем справедливость восторжествовала! Спасибо еще раз!


"не доходят письма"
Отправлено mEDLAR , 14-Мрт-09 09:20 
>Логи я не трогал, но сделал kas3 stop

как только вчера увидела у вас kas в фильтрах, у меня сразу подозрение на него пало.
но зная за собой давнее предвзятое отношение к KAS&Co, решила обождать
с вынесением приговора ...


"не доходят письма"
Отправлено Medlar , 14-Мрт-09 09:42 
и кстати если бы не ваш очень странный для
milter уровень логирования причина ошибки была бы давным давно ясна
и может не пришлось бы заводить этот тред

"не доходят письма"
Отправлено andlis , 14-Мрт-09 12:00 
>и кстати если бы не ваш очень странный для
>milter уровень логирования причина ошибки была бы давным давно ясна
>и может не пришлось бы заводить этот тред

Ну да.. Так знал бы прикуп... Честно говоря я начал с того, что просмотрел настройки KAS, разрешил отправку почты с соответствующих адресов и тп...
А уровень такой, потому что при фоновой активности (моей) никакой пользы кроме вреда от логов KAS я не получаю. Если их еще и раздувать, то вреда станет сильно больше чем пользы.
Но в целом каюсь, признаю - был не прав, вспылил!
Спасибо еще раз