Не может отправлять электронную почту по адресам в моем собственном домене
У меня есть простой php script в моем домене, который отправляет мне электронное письмо:
...
$toMail = "[email protected]"; //this works - I get the email at my gmail
$toMail = "[email protected]"; //this doesn't - I get nothing
mail($toMail, $subject, $message, $header);
Какую настройку я могу изменить, чтобы исправить это?
Ответы
Ответ 1
У меня была эта проблема сама, когда я недавно обновлял сайт.
Возникла проблема с настройкой нашей системы, так что система считала, что, поскольку электронная почта поступает из того же домена, это было спам-электронное письмо и, как таковое, блокировало его.
Обратитесь к системному администратору, чтобы вы могли отправлять электронные письма и т.д.
Либо это, либо вам придется изменить заголовки, чтобы они выглядели так, будто они отправляются с внешнего адреса. Надеюсь, вы его отсортировали.
Ответ 2
Для людей, использующих Google Apps для электронной почты, но имеющих свой хост в другом провайдере, это более подробные инструкции для людей, которые не очень знакомы с cPanel.
Я могу исправить проблему отправки электронной почты из своего домена с помощью формы PHP при отправке электронной почты в учетную запись внутри моего домена.
то есть. mydomain.com Контактная форма, отправляющая электронное письмо по адресу c[email protected]
Вышеуказанное не работает, даже если у моего домена есть правильные записи MX для домена с помощью Google Apps.
Как заметил Майк (и другие), проблема была решена: добавление записей MX в cPanel.
- Войдите в cPanel
- Перейдите в раздел cPanel Mail
- Поиск MX Entry Maintenance, иногда над значком нет текста.
- Выберите связанный домен
- Изменить Электронная почта. Маршрутизация на Удаленный почтовый обмен.
- Добавьте все записи Google MX, как они находятся в вашей конфигурации домена, с использованием соответствующих значений приоритета.
Вы можете проверить записи здесь и приоритеты
https://support.google.com/a/answer/174125
- Дважды проверьте, что выбрано Remote Mail Exchanger..
С помощью этой настройки я смог отправить электронную почту с помощью функции электронной почты электронной почты на учетную запись электронной почты в том же домене, что и на моем веб-сайте.
Инструкции Google App о записи MX
https://support.google.com/a/answer/54717?hl=en
Ответ 3
Верхний ответ на https://serverfault.com/questions/65365/disable-local-delivery-in-sendmail кажется мне правильным. Суть его в том, что вы хотите следующее в вашем sendmail.mc:
define(`MAIL_HUB`, 'example.com.')dnl
define(`LOCAL_RELAY`, 'example.com.')dnl
Где example.com является доменом, о котором идет речь.
Ответ 4
Если вы используете postfix, сделайте следующее:
- подключитесь к вашему серверу через ssh.
- отредактируйте файл main.cf:
nano /etc/postfix/main.cf
- прокомментируйте следующую строку с помощью #:
# mydestination = ...
- добавить в конец документа main.cf:
mydestination =
- перезагрузите конфигурацию постфикса, выполнив:
/etc/init.d/postfix reload
Ответ 5
Вам нужно установить дополнительный параметр в своей почтовой функции. В вашем рабочем примере вам нужно будет добавить свой адрес электронной почты с помощью "-f", например.
mail($toMail, $subject, $message, $header, "[email protected]");
Ответ 6
У меня была та же проблема и я смог решить ее следующим образом. Я не храню почту локально на сервере, но использую записи MX в регистраторе для прямой отправки сообщений в Google Apps. Оказалось, что записи MX необходимо обновить в Cpanel, так как сервер не брал записи MX у регистратора, а вместо этого отбрасывал, так как не было локальной записи MX или почтового ящика. Я обновил записи MX на Cpanel, чтобы соответствовать записи MX регистратора, и проблема была исправлена мгновенно.
Ответ 7
У вас есть ваш адрес электронной почты, размещенный на другом сервере, чем веб-сайт? Если это так, PHP script может пытаться отправить его внутренне, и в этом случае он просто исчезнет, а другие целевые электронные письма будут доставлены в Интернет и правильно маршрутизированы.
Решение, которое я нашел, это отключить почтовый сервер на вашем веб-хосте, а затем PHP будет отправлять сообщение в Интернет для правильной отправки.
Ответ 8
Я согласен с Майклом Хеллейном, проблема с корнем может быть вашей sendmail с учетом ваших учетных записей электронной почты домена example.com как локальных учетных записей. Если это так, здесь несколько ссылок:
Но в моем случае, используя FreeBSD 8.2, что действительно делало трюк:
# cd /etc/mail
# vim freebsd.mc
Добавьте эти две строки:
define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl
Прямо перед:
MAILER(local)
MAILER(smtp)
Тогда:
# make
Это выводится:
cp freebsd.mc host.example.com.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4 host.example.com.mc > host.example.com.cf
cp freebsd.submit.mc host.example.com.submit.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4 host.example.com.submit.mc > host.example.com.submit.cf
Тогда:
# cp sendmail.cf sendmail.cf.bak
# cp host.example.com.cf sendmail.cf
# /etc/rc.d/sendmail restart
Надеюсь, это сэкономит некоторые головные боли кому-то.
Ответ 9
С PostFix, Debian7, smtp Mailjet
Если домен my-domain.com
, в /etc/postfix/main.cf
, измените
mydestination = my-domain.com, localhost, localhost.localdomain, localhost
to
mydestination = localhost, localhost.localdomain, localhost
Ответ 10
убедитесь, что вы действительно можете отправить почту в свою учетную запись электронной почты домена, а затем проверить свой код/адрес электронной почты, убедитесь, что все написано правильно. Если ничего из этого не помогло, я не знаю, что пошло не так.
Ответ 11
Как объясняют другие, некоторые серверы настроены на отклонение писем с отсутствующим действительным адресом электронной почты на отправляющем сервере. Убедитесь, что строка $headers содержит определенный действительный адрес электронной почты "From: [email protected]".
Ответ 12
У меня была такая же проблема, и поскольку я был размещен на другом сервере для электронной почты, мне просто пришлось отключить локальный почтовый сервер.
Ответ 13
У меня была эта проблема несколько раз, и виновником было то, что письмо было размещено на другом сервере (например, в Google Apps). Когда почта отправляется в локальный домен, он не беспокоится о поиске в записи MX, и поэтому он не будет правильно маршрутизироваться. Решение этой проблемы - просто просто отключить почтовую функцию на вашем сервере вашим хостом.
Ответ 14
У меня тоже была эта проблема. Отключение почтового сервера означало, что не было отправлено ни одного письма! Поэтому я исправил удаление всех локальных доменных имен из файла /etc/mail/local-host-names
Ответ 15
Убедитесь, что ваша запись txt
настроена правильно для вашего домена. Обычно это происходит, если вы не помещаете это в запись txt
: @ (None)
v = spf1 include: _spf.google.com ~ all
Ответ 16
У меня была аналогичная проблема, когда все письма были прекрасно отправлены в другие домены, такие как gmail, live, yahoo и т.д., но все письма исчезли в локальных доменах.
У меня был VPS-сервер с godaddy, на котором работал Linux на Qmail.
Я решил проблему, удалив определенные имена доменов в файле var/qmail/control/virtualdomains.
Ответ 17
Также может быть доступен почтовый сервер SMTP.
Ответ 18
Я трачу более 8 часов на эту ошибку и решает ее просто изменить заголовок на любой другой адрес электронной почты, и он будет работать