Cara mengonfigurasi nama domain asli untuk alamat pengirim


10

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 = <201.r25@localhost.localdomain>, 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: to=external@server.com, 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 external@server.com 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_sendmaildiaktifkan. Apa lagi yang harus saya lakukan untuk mengirim surat?


Anda mengedit sendmail.mc, mengubah baris localhost.localdomaindan localhostmenjadi sesuatu yang bermakna dan mengkompilasi file mc sendmail.cf?
fboaventura

@ fboaventura, tidak, saya menghapus komentar dua baris dengan menghapus dnldi depan mereka.
Pertanyaan Overflow

Bisakah Anda menambahkan bagian yang relevan dari skrip php Anda, di mana Anda memohon mail()? Dan, sendmail.mcini bukan file konfigurasi yang tepat, file ini harus dikompilasi menjadi sendmail.cfmenggunakan m4.
fboaventura

@ fboaventura, terima kasih, saya tahu bahwa mengenai persyaratan kompilasi, saya bisa membuatnya bekerja sekarang. Lihat jawaban saya di bawah ini. Terima kasih atas bantuan Anda :)
Pertanyaan Overflow

Jawaban:


10

Saya pikir saya baru saja menyelesaikannya. Saya memiliki yang berikut ini di / etc / hosts :

127.0.0.1 www.mydomain.com test.mydomain.com
127.0.0.1 cdn.mycdn.com
127.0.0.1 localhost.localdomain localhost myserver.com

Yang saya butuhkan adalah menempatkan myserver.com di depan baris localhost.localdomainsehingga sendmail akan berpikir bahwa itu menggunakan domain asli untuk mengirim email.


3
Anda pasti dapat menerima jawaban Anda sendiri bahwa itu solusinya ... Sebagai seorang sidenote, biasanya /etc/hosts(dengan "s"), selain itu: jawaban yang bagus!
Levite

2

Anda harus mengonfigurasi, di dalam skrip Anda, untuk memiliki tajuk email Anda From: sender@domain.com.


Maaf, saya seharusnya mengatakan bahwa ini sudah diatur dalam header.
Pertanyaan Overflow

1

Di sendmail.mcadd Anda :

LOCAL_CONFIG
Djmyserver.com

Kompilasi ulang sendmail.cf, mulai ulang sendmail dan Anda akan baik-baik saja


1

Dalam kasus saya, pada Ubuntu 16.04 pada instance AWS, yang diperlukan adalah menambahkan /etc/mail/sendmail.mc:

define(`confDOMAIN_NAME', `mydomainname.com')dnl

pada baris sebelum MAILER_DEFINITIONSbaris menuju akhir file, DAN tambahkan baris yang sama ke akhir /etc/mail/submit.mc. Kemudian ketik sudo suuntuk izin root, dan kompilasi untuk mengkonfigurasi dengan:

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

... lalu exitsudo. Akhirnya, sudo service sendmail restartuntuk 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/hostsfile.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.