не может отправлять электронную почту по адресам в моем собственном домене

У меня есть простой 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); 

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

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

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

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

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

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

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

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

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

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

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

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

Самый верный ответ на 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 является доменом, о котором идет речь.

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

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

nano /etc/postfix/main.cf

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

# mydestination = ...

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

mydestination =

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

/etc/init.d/postfix reload

Вам необходимо установить дополнительный параметр в вашей почтовой функции. В вашем рабочем примере вам нужно будет добавить свой адрес электронной почты с помощью «-f», например

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

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

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

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

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

Надеюсь, это сэкономит некоторые головные боли кому-то.

С PostFix, Debian7, smtp Mailjet

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

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

в

 mydestination = localhost, localhost.localdomain, localhost 

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

Как объясняют другие, некоторые серверы настроены на отклонение писем, у которых отсутствует действительный адрес электронной почты на отправляющем сервере. Убедитесь, что строка $ headers содержит определенный действительный адрес электронной почты «From: foo@example.com».

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

У меня была эта проблема несколько раз, и виновником было то, что электронная почта размещалась на другом сервере (например, в Google Apps). Когда почта отправляется в локальный домен, он не беспокоится о поиске в записи MX, и поэтому он не будет правильно маршрутизироваться. Решение этой проблемы – просто просто отключить почтовую функцию на вашем сервере вашим хостом.

У меня тоже была эта пробема. Отключение почтового сервера означало, что не было отправлено ни одного письма! Таким образом, исправление, которое я сделал, – удалить все локальные имена домена из файла /etc/mail/local-host-names

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

У меня была аналогичная проблема, когда все письма были прекрасно отправлены в другие домены, такие как gmail, live, yahoo и т. Д., Но все письма исчезли в локальных доменах. У меня был VPS-сервер с godaddy, который был основан на Linux на основе Qmail.

Я решил проблему, удалив определенные имена доменов в файле var / qmail / control / virtualdomains.

Почтовый сервер SMTP тоже может быть вариантом.

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