Назад | Перейти на главную страницу

Ошибка sendmail «пользователь неизвестен» - простое электронное письмо из php-формы

Я настроил веб-сервер ubuntu, и мне нужно отправлять электронную почту из форм через php. На сервере размещено несколько веб-сайтов, и эта проблема сохраняется для всех.

Когда у меня есть форма, отправляемая на доменное имя, не размещенное на сервере (например, gmail, yahoo и т. Д.), Электронное письмо отправляется из формы без проблем.

Когда я отправляю форму на адрес user@domain.com, который размещен на локальном сервере, я получаю сообщение об ошибке «пользователь неизвестен». Это потому, что я не создавал учетные записи на сервере, но я не планирую ... электронное письмо размещено в другом месте [gmail].

Это пример того, что я вижу в / var / mail / www-root ...

The original message was received at Sun, 17 Oct 2010 18:39:41 -0700 from www-data@localhost

----- The following addresses had permanent fatal errors ----- 
orders@domain.com
(reason: 550 5.1.1 <orders@domain.com>... User unknown)
(expanded from: orders@domain.com)

Как правильно это настроить?

Спасибо.

В свой sendmail.mc добавьте:

define(LUSER_RELAY,`mail.google.com')dnl

Или какой-либо другой исходящий SMTP-сервер, который Google сказал вам использовать. В зависимости от вашего дистрибутива linux создайте sendmail.cf и перезапустите sendmail (в Debian это делается с помощью sendmailconfig).

РЕДАКТИРОВАТЬ: если машина не принимает входящую электронную почту, может быть лучше установить nullmailer:

# apt-get install nullmailer
# dpkg-reconfigure nullmailer

EDIT: поскольку nullmailer не может работать с Gmail, вы можете использовать ssmtp

Хотя получение постфикса может быть хорошей идеей, но такая проблема может также означать, что вы отправляете электронную почту с IP-адреса, внесенного в черный список. Многие IP-адреса ISP, назначенные DHCP, находятся в черном списке http://www.spamhaus.org/.

Если вы отправляете электронное письмо из sendmail, оно не будет показывать точную ошибку и продолжит раздражать User Unknown ошибка, если вы не включите ведение журнала. Однако постфикс автоматически сообщает вам точную проблему, например

С любого почтового сервера

Mail server said: 550 Blacklisted in zen.spamhaus.org: http://www.spamhaus.org/query/bl?

От Google

status=bounced (host gmail-smtp-in.l.google.com[74.125.142.27] said: 550-5.7.1 [IP] The IP you're using to send mail is not authorized to 550-5.7.1 send email directly to our servers. Please use the SMTP relay at your 550-5.7.1 service provider instead. Learn more at 550 5.7.1 http://support.google.com/mail/bin/answer.py?a

Из Hotmail

status=bounced (host mx4.hotmail.com[65.55.37.120] said: 550 DY-001 (COL0-MC4-F9) Unfortunately, messages from <IP> weren't sent. Please contact your Internet service provider. You can tell them that Hotmail does not relay dynamically-assigned IP ranges. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.

Если вы используете свой собственный почтовый сервер, возможно, вы могли бы исправить это, в противном случае вам необходимо обратиться к интернет-провайдеру для решения этой проблемы.

HTH

Если вам все равно, какой MTA вы действительно используете, я рекомендую установить Postfix. Его довольно легко настроить, и я использую его на всех своих веб-серверах, а также на почтовых серверах, которые я обслуживаю для клиентов.

sudo apt-get install postfix

Если Postfix уже установлен, запустите sudo dpkg-reconfigure postfix

Следуйте меню, выберите «Спутниковая система», придерживайтесь значений по умолчанию, пока вас не спросят о хосте ретрансляции SMTP, где вы введете хост SMTP, который вам разрешено использовать.

Возможно, вам также придется добавить следующее в /etc/postfix/main.cf

# Disable local delivery
mydestination =
local_recipient_maps =
local_transport = error:local mail delivery is disabled