Latar Belakang: Jika Anda telah menyiapkan server apache lokal untuk tujuan pengembangan, Anda mungkin mengalami masalah ketika sendmail membutuhkan waktu lama (setidaknya satu menit) untuk mengirim email. Ini sangat menyebalkan jika Anda mencoba men-debug masalah dengan email yang Anda buat.
Ada beberapa posting forum di internet yang membahas masalah ini. Namun, tidak ada tema yang menjelaskan apa yang harus dilakukan dengan cukup detail untuk pengetahuan saya yang terbatas. Inilah langkah-langkah yang berhasil bagi saya:
1) temukan nama host Anda (seandainya Anda lupa) menggunakan perintah ini:
:~$ cat /hosts/hostname
myhostname
2) edit file /etc/hosts
dan pastikan baris pertama adalah sebagai berikut:
127.0.0.1 localhost.localdomain localhost myhostname
3) edit file konfigurasi sendmail ( /etc/mail/sendmail.cf
di Ubuntu) dan Batalkan komentar pada baris#O HostsFile=/etc/hosts
4) Nyalakan kembali komputer. Komputer seharusnya boot lebih cepat sekarang dan fungsi mail () akan segera kembali. NAMUN, email tidak akan benar-benar dikirim kecuali jika Anda mengikuti langkah 5.
5) Anda harus menggunakan opsi sendmail '-f' baru setiap kali menggunakan fungsi mail. Sebagai contoh:
mail('[email protected]', 'the subject', 'the message', null, '[email protected]');
Pertanyaan saya untuk sesama serverfaulter saya adalah:
Perubahan apa lagi yang bisa dilakukan sehingga saya tidak harus menggunakan opsi sendmail -f? Meskipun tidak terlalu sulit untuk menambahkan opsi -f, itu adalah masalah ketika CMS Anda (seperti Drupal) tidak menggunakan opsi -f saat mengirim email. Anda perlu meretas modul inti untuk menambahkan opsi ini.
cat /etc/hostname
Jawaban:
Ya saya tahu bahwa ini bukan yang Anda minta, tetapi mengapa Anda tidak mencoba Postfix atau Exim? Keduanya tersedia untuk ubuntu (Postfix bahkan merupakan mta default pada sistem Ubuntu) dan keduanya memberikan perintah 'sendmail' yang kompatibel yang bekerja dengan sangat baik. Sendmail IMHO agak ketinggalan zaman dan Anda akan mendapatkan peluang dukungan yang lebih baik dengan MTA yang lebih modern.
sumber
sendmail
biner yang menerima opsi yang sama dengan sendmail asli, untuk masalah kompatibilitas.Ini bekerja untuk saya:
Lihat petunjuk di sini tentang cara melakukannya di sini: https://help.ubuntu.com/community/Postfix (Ini mungkin sudah diinstal, dan biner 'sendmail' sebenarnya bisa menjadi alias untuk postfix)
http://lenss.nl/2009/01/making-php-mail-work-on-ubuntu-through-postfix/
Saya pikir Anda bisa mengatur parameter 'myorigin' ke nama domain aktif apa pun seperti nama domain yang Anda miliki.
sumber
Ini mungkin atau mungkin bukan solusi bagi Anda: tambahkan
mail.force_extra_parameters = "[email protected]"
ke file php.ini Anda . Itu membuat PHP secara otomatis menambahkan [email protected] sebagai parameter kelima ke fungsi mail () PHP.Itu nilai hardcoded dan hanya berlaku di php.ini sehingga tidak akan sangat fleksibel, tetapi mungkin bekerja untuk Anda dalam kasus pengembangan Anda?
sumber
Dengan menonton lalu lintas jaringan (pikirkan
tcpdump
) atau dengan menjalankan prosesstrace
sendmail atau apache Anda, Anda harus dapat mengetahui mengapa penundaan itu ada sehingga Anda dapat memperbaiki masalah root.Biasanya keterlambatan dalam rentang tersebut adalah karena gagal pencarian DNS, tetapi Anda tidak akan tahu sampai Anda melihatnya. Kecuali jika Anda memperbaiki masalah yang mendasarinya, itu mungkin akan menjadi masalah tidak peduli bagaimana Anda mencoba mengatasinya.
sumber
Saya belum pernah menemukan masalah menggunakan mail () di PHP yang bukan merupakan hasil dari masalah pada MTA.
Dalam file php.ini Anda akan menampilkan perintah apa yang dijalankannya untuk mengirim email (default: "sendmail -t -i"). Coba kirim email dari baris perintah menggunakan ini - saya berani bertaruh lambat.
Hal-hal yang biasa diperiksa adalah apakah server DNS dikonfigurasikan dengan benar pada mesin (dan dapat menyelesaikan semua alamat yang dikonfigurasi dalam MTA) dan bahwa jika relai cerdas dikonfigurasikan maka nama dapat diselesaikan ke alamat yang dapat disambungkan oleh sistem.
sumber