Я настроил веб-сервер 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