背景:開発目的でローカルのapacheサーバーをセットアップしている場合、sendmailが電子メールを送信するのに長い時間(少なくとも1分)かかる問題が発生する可能性があります。生成した電子メールの問題をデバッグしようとすると、これは非常にイライラします。
この問題について議論するインターネット上のフォーラム投稿がいくつかあります。しかし、テーマはどれも私の限られた知識のために十分に詳細に何をすべきかを説明していませんでした。ここに私のために働いたステップがあります:
1)次のコマンドを使用して、ホスト名を見つけます(忘れた場合)。
:~$ cat /hosts/hostname
myhostname
2)ファイル/etc/hosts
を編集し、最初の行が次であることを確認します。
127.0.0.1 localhost.localdomain localhost myhostname
3)sendmail構成ファイル(/etc/mail/sendmail.cf
Ubuntuで)を編集し、行のコメントを外します#O HostsFile=/etc/hosts
4)コンピューターを再起動します。これでコンピューターの起動が非常に速くなり、mail()関数がほぼすぐに戻るはずです。ただし、手順5を実行しない限り、実際にはメールは送信されません。
5)メール機能を使用するときは常に、sendmailの「-f」オプションを使用する必要があります。例えば:
mail('recipient@somewhere.com', 'the subject', 'the message', null, '-fsender@somewhere.com');
私の仲間のサーバー障害者に対する私の質問は:
sendmail -fオプションを使用する必要がないように、さらに変更を加えることができますか?-fオプションを追加するのはそれほど難しくありませんが、メールの送信時にCMS(Drupalなど)が-fオプションを使用しない場合は問題になります。このオプションを追加するには、コアモジュールをハックする必要があります。
cat /etc/hostname