Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Apache + PHP5 + exim4 не работает mail() [РЕШЕНО]  (Прочитано 3775 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
<?php
if(mail("mymail@server.ru""subj""mess""head"exim))
    echo(
'Recieved');
else
    echo(
'Droped');
?>
Выдает "Recived", но мне на мыло ничего не приходит...

Пробовал ставить в качестве MTA sendmail, и, соответственно, менял в коде exim на оный, но при выполнении кода, страница висит минуту и пишет "Droped".

Как прикрутить почту к апачу?
« Последнее редактирование: 27 Март 2010, 22:54:35 от Protopopulus »
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #1 : 27 Март 2010, 21:39:38 »
if(mail("mymail@server.ru", "subj", "mess", "head", exim))
А зачем выделенное? И что в логах?

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #2 : 27 Март 2010, 21:46:15 »
В каком плане "зачем выделенное"? Если про адрес получателя, то, вроде бы, как и в описании самой функции mail() такое указано. А если про exim, то и с ним и без него не работает. Просто пробовал по совету гугла добавить этот параметр.

А в логах самого апача нет ошибок по этому поводу.
« Последнее редактирование: 27 Март 2010, 21:47:54 от Protopopulus »
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #3 : 27 Март 2010, 21:48:30 »
Я про последний параметр "exim". И про логи exim-а.

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #4 : 27 Март 2010, 22:14:35 »
Цитировать
Для Debian-based систем exim4 по умолчанию настроен только для работы с localhost. Для того, чтобы его заставить работать с сетью, следует выполнить команду dpkg-reconfigure exim4-config с правами root и ответить на несколько вопросов.
Сделал так. В логах выдало:
2010-03-27 22:06:37 1NvbLB-00051X-PM <= www-data@sofocl U=www-data P=local S=345
2010-03-27 22:06:37 1NvbLB-00051X-PM ** maymail@server.ru: all relevant MX records point to non-existent hosts or (invalidly) to IP addresses
2010-03-27 22:06:37 1NvbLB-00051Z-S7 <= <> R=1NvbLB-00051X-PM U=Debian-exim P=local S=1195
2010-03-27 22:06:37 1NvbLB-00051X-PM Completed
Почта не пришла...
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #5 : 27 Март 2010, 22:21:24 »
Гугль выдал следующее (привожу копипасту с другого форума):

Исправление неправильной MX записи в DNS средствами exim:
Иногда бывает, что некоторые админы прописывают в DNS для MX записи IP-Адрес и при отправке письма в логах пишется следующее:

    all relevant MX records point to non-existent hosts or (invalidly) to IP addresses
MX запись выглядит так:

    dig mx vp.kis.ru
    ;; ANSWER SECTION:
    vp.kis.ru.              308     IN      MX      10 195.98.60.250.
Если же взять любой другой почтовый сервер, то увидим корректную MX запись:

    dig mx mail.ru
    ;; ANSWER SECTION:
    mail.ru.                17099   IN      MX      10 mxs.mail.ru.

В exim есть решение и на этот случай.
В документации у лиссяры:
allow_mx_to_ip - разрешить MX указывать на IP-адрес
Попутно раскопал ещё тут .

Вот ещё почти аналогичный вариант:
Запись в логе exim при проверке адресата:

    2008-09-09 13:11:50 [24628] H=comp1.mydomain.ru.local [192.168.222.22]:2822 F=<myuser1@mydomain.ru> rejected RCPT <gtrk@nnov.ru>: Recipient verify failed: all relevant MX records point to non-existent hosts
Проверяем наличие MX записи:


    # host nnov.ru
    nnov.ru has address 195.98.32.114
    nnov.ru mail is handled by 10 not-for-mail.bca.ru.

Пробуем соединиться с сервером:

    # telnet not-for-mail.bca.ru 25
    not-for-mail.bca.ru: hostname nor servname provided, or not known
Не существует такого хоста, о чём и сказано в ошибке. (all relevant MX records point to non-existent hosts)

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #6 : 27 Март 2010, 22:27:36 »
Да я уже это прочитал... Гуглю уже часа четыре. :(
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #7 : 27 Март 2010, 22:30:34 »
Ну и что, allow_mx_to_ip не помогает? dig mx записи сервера всё нормально показывает? Коннект к mx серверу назначения по 25 порту проходит, если ручками зателнетить?

Пользователь решил продолжить мысль 27 Март 2010, 22:33:49:
maymail@server.ru это реальный адрес, или для примера?
« Последнее редактирование: 27 Март 2010, 22:33:49 от Mam(O)n »

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #8 : 27 Март 2010, 22:39:45 »
Чьорт побьери! Допустил в адресе получателя маааахонькую ошибочку :-[ Сейчас в логах уже более вменяемые сообщения, но почта пока не приходит. Пойду еще погуглю немного. Если получится, то оставлю хауту. :)
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #9 : 27 Март 2010, 22:44:52 »
Сейчас в логах уже более вменяемые сообщения, но почта пока не приходит.
Например? Вот у меня, допустим при успешной отправке вот что:
2010-03-27 22:18:00 1NvbWC-0002e2-Pk <= мой_адрес@0x0000.ru U=mamon P=local S=345
2010-03-27 22:18:01 1NvbWC-0002e2-Pk => мой_адрес@gmail.com R=dnslookup T=remote_smtp H=gmail-smtp-in.l.google.com [209.85.227.27]
2010-03-27 22:18:01 1NvbWC-0002e2-Pk Completed

но, без специальной TXT записи у себя на домене гугль отправлял все письма в спам. http://www.openspf.org/

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail()
« Ответ #10 : 27 Март 2010, 22:45:49 »
В общем, попробовал с allow_mx_to_ip и без - работает. Только не все сервера принимают подобный код, видимо, надо тому же рамблеру посылать почту с вменяемыми headers-ами.

Пользователь решил продолжить мысль 27 Март 2010, 22:46:37:
Сейчас в логах уже более вменяемые сообщения, но почта пока не приходит.
Например? Вот у меня, допустим при успешной отправке вот что:
2010-03-27 22:18:00 1NvbWC-0002e2-Pk <= мой_адрес@0x0000.ru U=mamon P=local S=345
2010-03-27 22:18:01 1NvbWC-0002e2-Pk => мой_адрес@gmail.com R=dnslookup T=remote_smtp H=gmail-smtp-in.l.google.com [209.85.227.27]
2010-03-27 22:18:01 1NvbWC-0002e2-Pk Completed

но, без специальной TXT записи у себя на домене гугль отправлял все письма в спам. http://www.openspf.org/
А можно про эту запись подробней? :)
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail() [РЕШЕНО]
« Ответ #11 : 27 Март 2010, 23:08:19 »
У меня было так. Гугль не мог сделать reverse dns lookup на адрес узла с которого отправлялась почта, и письма отправлял в спам. Я немого пошерстив инет вышел на решение прописать SPF(Sender Policy Framework) запись на DNS моего домена, от имени которого отправлялась почта. Вот так:
mamon@mamon-desktop:~$ dig 0x0000.ru txt
.... всякая дрочь ....
;; ANSWER SECTION:
0x0000.ru. 3600 IN TXT "v=spf1 +a +mx -all"

Если разобрать, то
v=spf1 означает, что используется версия spf1 формата записи
+a означает, что можно принимать письма с адрес, прописанныого в A записи данного домена
+mx означает, что разрешать адрес, прописанный в MX записи данного домена
-all означает, что все остальные не имеют права отсылать письма с именем данного домена.

Вобщем гугль много интересного расскажет про SPF.

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Apache + PHP5 + exim4 не работает mail() [РЕШЕНО]
« Ответ #12 : 27 Март 2010, 23:20:15 »
Ясно... Короче, мне спамером не стать без личного домена :D В общем, понятно. Спасибо за разъяснение.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

 

Страница сгенерирована за 0.059 секунд. Запросов: 22.