• Регистрация

1,110 вопросов

1,472 ответов

1,310 комментариев

8,868 пользователей

Добро пожаловать на Ubuntu Ответы, где вы можете задать вопросы и получить ответы от других пользователей сервиса.

Не работает функция mail()

+4 голосов
На сервере вроде настраивал почтовый сервер. Но когда хочу отправить письмо, используя mail() - письмо не приходит. В чем может быть дело?
Вопрос Jul 5, 2014 от diefair Новичок (540 баллов) в категории Серверные системы
retagged Jul 6, 2014 от sir_mcnellan
   

3 ответов

+2 голосов
Отправьте что то из консоли напрямую.

echo "message" | mail -s "Test message" login@domain

Приходит или нет?

Покажите лог:

tail -100 /var/log/maillog
Ответ Jul 5, 2014 от and3001 Гуру (25,050 баллов)

Что бы ошибок было меньше, создайте сим линк:

sudo ln -s /etc/aliases.db /etc/postfix/aliases.db

Теперь покажите какой у вас hostname. Судя по логам, mail.ru почтовик делайт обратную проверку и блочит вас, т.к. у вас имя example.com. Нужно нормальное имя и PTR запись.

Выполните:

hostname

ifconfig

Аааа, стоп. Ваш ISP сервис провайдер может блокировать 25-й порт. Это так же одна из наболее вероятных причин, из-за которых почта не будет отправляться.

Вот тому подтверждение из логов:

Jul  7 18:05:06 web postfix/smtp[13172]: connect to mxs.mail.ru[217.69.139.150]:25: Connection timed out
Jul  7 18:05:06 web postfix/smtp[13172]: 09AD0413F1: to=<diefair@mail.ru>, relay=none, delay=196092, delays=196031/0.08/60/0, dsn=4.4.1, status=deferred (connect to mxs.mail.ru[217.69.139.150]:25: Connection timed out)
Jul  7 18:09:06 web postfix/qmgr[23158]: A4A2F413F0: from=<webmaster@magaz.ihave.com.ua>, size=784, nrcpt=1 (queue active)
Jul  7 18:09:06 web postfix/qmgr[23158]: 5B9A84007B: from=<webmaster@jcdn.ru>, size=777, nrcpt=1 (queue active)
Jul  7 18:09:06 web postfix/smtp[13296]: connect to aspmx.l.google.com[2a00:1450:4013:c01::1a]:25: Network is unreachable

hostname - web.server.com

ifconfig -

eth0      Link encap:Ethernet  HWaddr 00:30:05:3e:51:39  

          inet addr:192.168.0.102  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::230:5ff:fe3e:5139/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1658722 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1181868 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:1205096082 (1.2 GB)  TX bytes:619007932 (619.0 MB)

 

lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:188526 errors:0 dropped:0 overruns:0 frame:0

          TX packets:188526 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:17307684 (17.3 MB)  TX bytes:17307684 (17.3 MB)

и что делать?

Я вижу что у вас немаршрутизируемый IP адрес 192.168.0.102. Это означает что вы находитесь в частной сети вашего интернет провайдера. Что бы отправлять почту вам нужно следующее

1. Либо связаться с провайдером и попросить для вас лично открыть 25-й порт (что врядли он сделает). Я подозреваю что ваш IP адрес кроме всего прочего еще и динамический, т.к. он может меняться время от времени

2. Второй вариант более жизнеспособный. Вам нужно заказать себе маршрутизируемый IP адрес. Или как его еще называют "честный IP". После того как у вас появится честный IP, вы скорее всего сможете отправлять почту и соединяться на 25-й порт. Но и в этом случае нужно обязательно согласовать это с вашим провайдером.

На вашем месте я бы взял в аренду VPS за пару долларов в месяц и не мучался бы с домашним компьютером.

0 голосов
Ответ Jul 5, 2014 от Князь Мышкин Гуру (17,150 баллов)
я уже все это делал - тольку 0
Вы Ubuntu Server используете? Какой именно?
Ubuntu Server 14.04

Тут про настройку Ubuntu Server 13.10. Может быть это вам поможет.
http://osc.dondub.com/articles/2014/01/article_598

Попробувал сделать по инструкции. Сначала, сказало что надо скачать новую версию iredmail, посмотрел на сайте - 0.8.7 (в инструкции 0.8.6), хотел закачать ее - говорит, что она не совместима. Хотя на сайте пишет, что совместима((( Так что ничего не вышло
Вам не нужен почтовый сервер что бы отправить сообщение. Вы же не собираетесь принимать почту и обслуживать почтовые ящики.
нет, мне просто нужно что бы работала функция mail()
+2 голосов

Поскольку мы практически разобрались в проблеме, я промоучу один из своих комментариев в ответ. Пусть это будет brief summary.

Я вижу что у вас немаршрутизируемый IP адрес 192.168.0.102. Это означает что вы находитесь в частной сети вашего интернет провайдера. Что бы отправлять почту вам нужно следующее

  1. Либо связаться с провайдером и попросить для вас лично открыть 25-й порт (что врядли он сделает). Я подозреваю что ваш IP адрес кроме всего прочего еще и динамический, т.к. он может меняться время от времени
  2. Второй вариант более жизнеспособный. Вам нужно заказать себе маршрутизируемый IP адрес. Или как его еще называют "честный IP". После того как у вас появится честный IP, вы скорее всего сможете отправлять почту и соединяться на 25-й порт. Но и в этом случае нужно обязательно согласовать это с вашим провайдером.

На вашем месте я бы взял в аренду VPS и не мучался бы с домашним компьютером.

Ответ Jul 7, 2014 от and3001 Гуру (25,050 баллов)
smtprelay.kyivsrtar.ua - опечатка

Надо smtprelay.kyivstar.ua

Вы написали 'sr' вместо 't'.

Исправляйте и проверяйте снова.

исправил, но письма не приходят. вот лог - 

http://paste.ubuntu.com/7773544/

кстати, вот что на серверной почте нашол после последней отправки - 

host smtprelay.kyivstar.ua[81.23.23.131] said:

    550-Verification failed for <root@web.server.com> 550-It appears that the

    DNS operator for web.server.com 550-has installed an invalid MX record with

    an IP address 550-instead of a domain name on the right hand side. 550

    Sender verify failed (in reply to RCPT TO command)

Ага, вижу. На этот раз уже письмо от вас уходит, но его ваш релей не пропускает. Вот строчка из лога:

Jul 10 08:13:45 web postfix/smtp[7886]: E366641A87: to=<diefa
ir@mail.ru>, relay=smtprelay.kyivstar.ua[81.23.23.131]:25, 
delay=5.4, delays=0.14/0.02/5.1/0.21, dsn=5.0.0, 
status=bounced (host smtprelay.kyivstar.ua[81.23.23.131] 
said: 550-Verification failed for <root@web.server.com> 
550-It appears that the DNS operator for web.server.com 
550-has installed an invalid MX record with an IP address 
550-instead of a domain name on the right hand side. 
550 Sender verify failed (in reply to RCPT TO command))

Похоже что вам нужно:

1. Связаться со своим провайдером и запросить себе  FQDN DNS имя

2. Попросить из прописать вам MX запись.  В данный момент у вас вместо MX записи IP адрес.

Иными словами, письмо не проходит из-за специфики настройки smtp релея вашего провайдера. Пишите ему. И предоставьте этот лог (собственно те строки, которые я привел в этом сообщении).

...