web-dev-qa-db-ja.com

自分のドメインのアドレスにメールを送信できない

ドメインにメールを送信する簡単なphpスクリプトがあります。

...
$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); 

これを修正するためにどの設定を変更しますか?

31
sol

最近サイトを再設計していたときに、自分でこの問題を抱えていました。

システムのセットアップ方法に問題があり、システムはメールが同じドメインから送信されたものであるため、スパムメールであると判断し、それをブロックしました。

電子メールなどの送信が許可されていることをシステム管理者に確認してください。

それとも、外部アドレスから送信されているように見えるようにヘッダーを変更する必要があります。あなたがそれをソートすることを願っています。

20
schubySteve

メールにGoogle Appsを使用しているが、ホストを他のプロバイダーに持っている人にとっては、cPanelにあまり詳しくない人向けの詳細な手順です。

ドメイン内のアカウントにメールを送信するときに、PHPフォームを使用して、ドメインからメールを送信する問題を修正できました。

つまり、mydomain.com連絡先フォームから[email protected]にメールを送信します。ドメインにGoogle Appsを使用するドメインの正しいMXレコードがある場合でも、上記は機能しませんでした。

Mikeが(および他の人たちも)上記のように、問題は解決されました:MXレコードをcPanelに追加しました。

  1. CPanelに入る
  2. CPanelメールセクションに移動します
  3. MXエントリメンテナンスを検索します。アイコンの上にテキストがない場合があります。
  4. 関連ドメインを選択
  5. EmailRouting toRemote Mail Exchangerに変更します。
  6. 適切な優先度値を使用して、ドメイン構成にあるすべてのGoogle MXレコードを追加します。ここで記録と優先順位を確認できます https://support.google.com/a/answer/174125
  7. Remote Mail Exchanger。が選択されていることを再確認してください。

この設定により、mail PHP関数を使用して、Webサイトと同じドメイン内のメールアカウントにメールを送信できました。

MXレコードに関するGoogleアプリの手順 https://support.google.com/a/answer/54717?hl=ja

48
VicM

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は問題のドメインです。

13
Michael Hellein

使用する場合 接尾辞、 これを行う :

  1. ssh経由でサーバーに接続します。
  2. あなたの編集 main.cf ファイル:

nano /etc/postfix/main.cf

  1. 次の行をコメントします  :

# mydestination = ...

  1. 最後に追加 main.cf 資料 :

mydestination =

  1. 次を実行して、後置構成を再読み込みします。

/etc/init.d/postfix reload

12

メール機能に追加のパラメーターを設定する必要があります。作業例では、メールアドレスの前に「-f」を追加する必要があります。

mail($toMail, $subject, $message, $header, "[email protected]");

10
David Pratt

私は同じ問題を抱えており、次の方法でそれを解決することができました。メールをサーバーにローカルに保存しませんが、レジストラーのMXレコードを使用してメールをGoogle Appsに転送します。サーバーはレジストラからMXレコードを取得せず、ローカルMXレコードまたはメールボックスがないため破棄するため、CpanelでもMXレコードを更新する必要がありました。レジストラのMXエントリと一致するようにCpanelのMXエントリを更新しましたが、問題は即座に修正されました

3
Mike

ウェブサイトとは異なるサーバーでメールをホストしていますか?その場合、PHPスクリプトはそれを内部で送信しようとするかもしれません。

私が見つけた解決策は、Webホストのメールサーバーを無効にして、PHPがメッセージをインターネットに送信して適切に送信することでした。

1
Meep3D

Michael Helleinに同意します。根本的な問題は、ドメインのexample.comメールアカウントをローカルアカウントと見なすsendmailである可能性があります。もしそうなら、ここにいくつかのガイドリンクがあります:

しかし、私の場合、FreeBSD 8.2を使用して、実際にやったことは:

# cd /etc/mail
# vim freebsd.mc

次の2行を追加します。

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

これが誰かの頭痛の種を救うことを願っています。

1
estepix

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
Nolwennig

私もこの問題を抱えていました。メールサーバーを無効にすると、メールはまったく送信されませんでした。したがって、私が行った修正は、/etc/mail/local-Host-namesファイルからすべてのローカルドメイン名を削除することでした

0
Roberoo

同様の問題があり、すべてのメールがgmail、live、yahooなどの他のドメインに完全に送信されていましたが、ローカルドメインではすべてのメールが消えていました。 QDAMを実行するLinuxベースのgodaddyを備えたVPSサーバーがありました。

Var/qmail/control/virtualdomains fileの特定のドメイン名を削除することで問題を解決しました。

0
SarthakGupta

SMTPメールサーバーもオプションになります。

ドメインのメールアカウントに実際にメールを送信できることを確認してから、コード/メールをチェックして、すべてが正しく記述されていることを確認してください。

0
techy

私はこのエラーに8時間以上を費やし、ヘッダーを他のメールアドレスに変更するだけで解決します

0
Abdou Ghonim

他の人が説明したように、一部のサーバーは、送信サーバー上の有効な電子メールアドレスがない電子メールを拒否するように構成されています。 $ headers文字列に、定義済みの有効なメールアドレス「From:[email protected]」が含まれていることを確認します。

0
Michelle

この問題は何度か発生しましたが、その原因はメールが別のサーバー(Google Appsなど)でホストされているかどうかでした。メールがローカルドメインに送信されるとき、MXレコードのルックアップを実行する必要がないため、適切にルーティングされません。この問題の解決策は、ホストによってサーバー上でメール機能を無効にするだけです。

0
user258677

私は同じ問題を抱えており、電子メール用に別のサーバーでホストされていたため、ローカルメールサーバーを無効にする必要がありました。

0
user208320

txtレコードがドメインに正しく設定されていることを確認してください。これは通常、これをtxt record:@ (None) v = spf1 include:_spf.google.com〜allに入れない場合に発生します

0
nezter

私のために働いたのはLocal Mail Exchangerを選択することです:

  • CPanelに移動
  • メールルーティングを選択
  • ドメインを選択してください
  • Local Mail Exchangerを選択します

Local Mail Exchangerは、GoDaddyの同じドメインのアカウントにメールを送信できるようにします。例:[email protected]

0
edrian