не могу отправить электронную почту на адреса в моем собственном домене - PullRequest
31 голосов
/ 10 июля 2009

У меня есть простой php-скрипт на моем домене, который отправляет мне электронное письмо:

...
$toMail = "me@gmail.com"; //this works - I get the email at my gmail
$toMail = "me@mydomain.com"; //this doesn't - I get nothing

mail($toMail, $subject, $message, $header); 

Какую настройку изменить, чтобы это исправить?

Ответы [ 19 ]

48 голосов
/ 27 марта 2014

Для людей, использующих Google Apps для электронной почты, но имеющих своего хоста у другого провайдера, это более подробные инструкции для людей, которые не очень знакомы с cPanel.

Я мог бы решить проблему отправки электронной почты с моего домена с помощью формы PHP при отправке электронной почты на учетную запись внутри моего домена.

т.е. mydomain.com Форма обратной связи, отправляющая письмо по адресу contact@mydomain.com. Вышеуказанное не работает, даже если в моем домене есть правильные записи MX для домена с использованием Служб Google.

Как отметил Майк (и другие) выше, проблема была решена: добавление записей MX в cPanel.

  1. Войдите в cPanel
  2. Перейдите в раздел Почта cPanel
  3. Поиск MX Entry Maintenance, иногда над значком нет текста.
  4. Выберите связанный домен
  5. Изменить Электронная почта Маршрутизация на Удаленный почтовый обменник.
  6. Добавьте все записи Google MX в том виде, в каком они есть в конфигурации вашего домена, используя соответствующие значения приоритета. Вы можете проверить записи здесь и приоритеты https://support.google.com/a/answer/174125
  7. Дважды проверьте, что выбран Удаленный почтовый обменник. .

С помощью этого параметра я смог отправить электронную почту с помощью функции PHP почты на учетную запись электронной почты в том же домене, что и мой сайт.

Инструкции Google App, говорящие о записях MX https://support.google.com/a/answer/54717?hl=en

20 голосов
/ 10 июля 2009

Я сам столкнулся с этой проблемой, когда недавно занимался редизайном сайта.

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

Уточните у своего системного администратора, разрешено ли вам отправлять электронные письма и т. Д.

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

13 голосов
/ 08 сентября 2011

Верхний ответ на 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 - рассматриваемый домен.

12 голосов
/ 05 ноября 2015

Если вы используете postfix , сделайте следующее:

  1. подключиться к вашему серверу через ssh.
  2. отредактируйте ваш main.cf файл:

nano /etc/postfix/main.cf

  1. прокомментируйте следующую строку с # :

# mydestination = ...

  1. добавить в конце main.cf документа:

mydestination =

  1. перезагрузите вашу конфигурацию postfix, запустив:

/etc/init.d/postfix reload

10 голосов
/ 17 августа 2010

Вам необходимо установить дополнительный параметр для вашей почтовой функции. В вашем рабочем примере вам необходимо добавить к вашему адресу электронной почты '-f', например:

mail($toMail, $subject, $message, $header, "-fme@mydomain.com");

3 голосов
/ 31 октября 2011

У меня была такая же проблема, и я смог решить ее следующим образом. Я не храню почту локально на сервере, но использую записи MX на регистраторе для направления почты в Службы Google. Оказалось, что записи MX также необходимо обновить в Cpanel, поскольку сервер не принимает записи MX от регистратора, а вместо этого отбрасывает, поскольку не было локальной записи MX или почтового ящика. Я обновил записи MX на Cpanel, чтобы они соответствовали записям MX регистратора, и проблема была мгновенно исправлена ​​

1 голос
/ 10 июля 2009

Ваша электронная почта размещена на сервере, отличном от веб-сайта? В этом случае PHP-сценарий может пытаться отправить его изнутри, и в этом случае он просто исчезнет, ​​а другие целевые электронные письма будут помещены в Интернет и перенаправлены должным образом.

Решение, которое я нашел, состояло в том, чтобы отключить почтовый сервер на вашем веб-хосте, а затем PHP отправит сообщение в Интернет для правильной отправки.

1 голос
/ 25 сентября 2015

С PostFix, Debian7, smtp Mailjet

Если домен my-domain.com, в /etc/postfix/main.cf, измените

mydestination = my-domain.com, localhost, localhost.localdomain, localhost

до

mydestination = localhost, localhost.localdomain, localhost
1 голос
/ 08 ноября 2011

Я согласен с Майклом Хеллейном, корень проблемы может заключаться в том, что ваш 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

Надеюсь, это избавит кого-то от головной боли.

0 голосов
/ 09 июля 2011

Убедитесь, что ваша запись txt правильно настроена для вашего домена. Обычно это происходит, когда вы не помещаете это в запись txt: @ (None) v = spf1 include: _spf.google.com ~ all

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