Saya mencoba mengirim email menggunakan mail()
fungsi php tetapi gagal entah bagaimana, mengeluh bahwa nama domain yang sebenarnya diperlukan. Berikut ini diamati di maillog:
sendmail 4984 r25984: from = apache, size = 273, class = 0, nrcpts = 1, msgid = <[email protected]>, relay = apache @ localhost
sendmail 4985 r25985: ruleset = check_mail, arg1 =, relay = mydomain.com [127.0.0.1], reject = 553 5.5.4 ... Nama domain asli diperlukan untuk alamat pengirim
sendmail 4984 r25984: [email protected], ctladdr = apache (48/48), delay = 00: 00:01, xdelay = 00: 00: 00, mailer = relay, pri = 30273, relay = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = Kesalahan format data
sendmail 4984 r25984: r25984: DSN: Kesalahan format data
cron dapat mengirim email ke [email protected] setiap kali ada masalah dengan logrotate. Saya tidak yakin mengapa php tidak dapat melakukannya. Saya mencoba membuat perubahan pada konfigurasi default di `sendmail.mc dengan yang berikut:
MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl
Tapi, sepertinya itu tidak berpengaruh. Header dari alamat di fungsi email php telah ditetapkan. Saya juga memastikan bahwa SELinux httpd_can_sendmail
diaktifkan. Apa lagi yang harus saya lakukan untuk mengirim surat?
sumber
sendmail.mc
, mengubah barislocalhost.localdomain
danlocalhost
menjadi sesuatu yang bermakna dan mengkompilasi file mcsendmail.cf
?dnl
di depan mereka.mail()
? Dan,sendmail.mc
ini bukan file konfigurasi yang tepat, file ini harus dikompilasi menjadisendmail.cf
menggunakanm4
.Jawaban:
Saya pikir saya baru saja menyelesaikannya. Saya memiliki yang berikut ini di / etc / hosts :
Yang saya butuhkan adalah menempatkan myserver.com di depan baris
localhost.localdomain
sehingga sendmail akan berpikir bahwa itu menggunakan domain asli untuk mengirim email.sumber
/etc/hosts
(dengan "s"), selain itu: jawaban yang bagus!Anda harus mengonfigurasi, di dalam skrip Anda, untuk memiliki tajuk email Anda
From: [email protected]
.sumber
Di
sendmail.mc
add Anda :Kompilasi ulang
sendmail.cf
, mulai ulang sendmail dan Anda akan baik-baik sajasumber
Dalam kasus saya, pada Ubuntu 16.04 pada instance AWS, yang diperlukan adalah menambahkan
/etc/mail/sendmail.mc
:pada baris sebelum
MAILER_DEFINITIONS
baris menuju akhir file, DAN tambahkan baris yang sama ke akhir/etc/mail/submit.mc
. Kemudian ketiksudo su
untuk izin root, dan kompilasi untuk mengkonfigurasi dengan:... lalu
exit
sudo. Akhirnya,sudo service sendmail restart
untuk me-restart sendmail, dan dari sana muncul email yang dikirim dari nama domain. Tidak satu pun dari perintah FEATURE atau MASQUERADE lainnya yang diperlukan, atau entri dalam/etc/hosts
file.sumber