Beberapa server SMTP jarak jauh yang saya coba kirimi surat untuk menolak menerima HELO dari server saya:
504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname
Rupanya, server Exim4 saya mengirim localhost
sebagai FQDN-nya. Mencari bersih dan banyak file konfigurasi, saya telah belajar bahwa nilai yang dikirim sebagai FQDN selama HELO diambil dari primary_hostname
variabel konfigurasi.
Pertanyaan saya adalah: apa cara yang benar untuk mengubah variabel ini dalam sistem Debian? Saya kira saya hanya dapat hardcode nilai di dalam file konfigurasi Exim4, tetapi IMHO tampaknya lebih masuk akal jika nilai secara otomatis sesuai dengan /etc/mailname
atau konfigurasi nama terpusat lainnya.
Saya merasa bahwa jawaban untuk pertanyaan saya dapat ditemukan dalam teks ini dari wiki Debian :
Nama yang digunakan oleh Exim di EHLO / HELO ditarik dari opsi konfigurasi
primary_hostname
. Konfigurasi default exim4 Debian tidak diaturprimary_hostname
. Exim lalu default ke uname () untuk menemukan nama host. Jika panggilan itu hanya mengembalikan satu komponen, gethostbyname () atau getipnodebyname () digunakan untuk mendapatkan nama host yang sepenuhnya memenuhi syarat.Jika Exim HELO Anda sebagai localhost.localdomain, maka kemungkinan besar Anda memiliki konfigurasi yang salah / etc / hosts yang dibuat oleh beberapa versi installer Debian. Dalam hal ini, harap perbaiki / etc / hosts Anda.
Sayangnya, saya tidak cukup akrab dengan administrasi server Linux untuk mengetahui apa artinya semua ini :(
hostname -f
masih melaporkan "localhost". Bagian tentang / etc / hosts di jawaban Anda tampaknya tidak jelas - seperti apa tampilan rekaman pertama?hostname -f
masih melaporkan "localhost", tampaknya perubahan ke / etc / hostname berhasil - saya dapat mengirimkan email saya sekarang. Saya masih ingin melihat bagian yang hilang dari posting Anda :) :)/etc/hostname
biasanya tidak mengandung FQDN pada sistem Debian, hanya nama host pendek./etc/hosts
mungkin127.0.0.2 mydomain.com myhostname
(127.0.0.2
berfungsi juga127.0.0.1
, karena loopback adalah jaringan kelas A). Anda mungkin dapat menggabungkan dua baris menjadi satu127.0.0.1 mydomain.com myhostname localhost
, tetapilocalhost
apakah nama host kanonik untuk127.0.0.1
, bukan? Itu semua mengingat bahwa Anda memiliki nama host, bukan FQDN sebagai nama host Anda. Selain itu, perubahan/etc/hostname
tidak segera berlaku, Anda harus melakukannyahostname myhostname
. Atau restart server.Jika Anda menggunakan file konfigurasi tunggal, setel variabel PRIMARY_HOST_NAME ke nama yang diinginkan:
Misalnya di /etc/exim4/exim4.conf:
atau atur
MAIN_HARDCODE_PRIMARY_HOSTNAME
di update-exim4.conf.conf jika Anda menggunakan konfigurasi file split.Agar aman, mulai ulang exim.
sumber
HELO 'mybox.mydomain.com'
yang tidak mengirim email ke Google, mungkin yang lain.update-exim4.conf
setelah mengubah konfigurasi. Dan restart biasanya tidak diperlukan setelah itu.exim
secara umum tampaknya memperhatikan perubahan pada konfigurasi tanpa memuat ulang. Tapi bisa dibilang lebih aman untuk memuat ulang, karena saya kira daemon itu sendiri tidak membaca ulang konfigurasi sampai memuat ulang. Kemudian, Anda membuatnya terdengar seperti/etc/exim4/exim4.conf
bisa berisi hanya baris di atas , tetapi saat Anda membuat file,/var/lib/exim4/config.autogenerated
diabaikan .../etc/exim4/exim4.conf.localmacros
, untuk split/etc/exim4/conf.d/main/000_localmacros
(file dalammain
dir diproses terlebih dahulu). Dan jalankanupdate-exim4.conf
+systemctl reload exim4
setelah membuat perubahan.Nama host utama diminta selama instalasi exim4. Anda dapat menjalankan perintah
untuk pergi melalui petunjuknya lagi.
Sejauh yang saya tahu, jika Anda sudah menggunakan 'konfigurasi split' (banyak file kecil di bawah /etc/exim4/conf.d) dan memilih untuk tetap dengan itu ketika diminta, dpkg-mengkonfigurasi ulang tidak boleh menimpa salah satu perubahan konfigurasi yang ada selain pengaturan yang diminta, tetapi, seperti biasa, Anda harus mengambil cadangan terlebih dahulu agar aman.
sumber
/etc/mailname
,. Secara default ini digunakan untuk memenuhi syarat alamat yang tidak memenuhi syarat . Yang hanya terdiri dari nama pengguna. Dengan menambahkan nama domain dari/etc/mailname
. Alamat yang dihasilkan digunakan diFrom
header.The
primary_hostname
variabel diisi sesuai dengan nama domain berkualifikasi lengkap (FQDN) dari sistem. Pada Debian dan sistem terkait ini biasanya dibentuk menggunakan konten/etc/hostname
dan/etc/hosts
file. File hostname harus berisi nama host pendek (misalnyafoo
), dan host file harus mengandung entri menyelesaikanfoo
kefoo.bar.baz
, yaitu hostname dengan akhiran domain-nya (biasanya cocok entri DNS).Output dari perintah
hostname
(tanpa parameter apa pun) akan mengembalikan yang pertama, danhostname -f
output akan mengembalikan yang terakhir.File hostname biasanya diisi setelah instalasi, dan file host dapat diedit untuk memiliki satu catatan lain di dalamnya di samping catatan localhost default - itu harus dalam bentuk:
Tiga kolom harus dipisahkan oleh spasi atau tab, tidak masalah. Alamat IP bisa 127.0.0.1 seperti localhost, tetapi bagian nama host telah cocok dengan nama host sistem, dan bagian tengah harus menjadi FQDN, yaitu nama host dengan akhiran domain.
Untuk memverifikasi jalur berfungsi, cukup jalankan
hostname -f
dan periksa apakah ia mengembalikan FQDN server Anda.Terakhir, restart Exim, misalnya dengan:
Setelah itu Anda harus mulai melihatnya HELO dengan benar. Variabelnya dapat diverifikasi dengan menjalankan:
(NB: Saya awalnya melakukan ini sebagai edit untuk jawaban dari tahun 2009, tetapi ditolak. Hal-hal yang awalnya saya perbaiki adalah: tidak perlu mengulangi catatan localhost default, cukup jelaskan apa penambahan yang seharusnya; jelaskan mana Alamat IP dapat digunakan; jelaskan apa itu FQDN; jelaskan cara memverifikasi exim itu sendiri.)
sumber
/usr/sbin/exim4 -bP primary_hostname
tidak bekerja Anda dapat memverifikasi nama host HELO dengan mengirim email percobaan ke pemeriksa otentikasi port25 , atau kotak surat lain tempat Anda dapat melihat aslinya. Lebih lanjut di sini . Pertimbangkan untuk memperbarui jawaban Anda.helo_data
adalah$primary_hostname
. Pada sistem Debian, Anda bisa menimpanya menggunakanREMOTE_SMTP_HELO_DATA
variabel, tetapi jika Anda hanya mengatur nama host utama Anda dengan benar, itu tidak perlu./etc/hosts
. Dan yang saya minta adalah untuk tidak memanggil dengan tepat apa yang tidak diterima secara umum.setelah menambahkan string yang sama di / etc / hosts, hostname -f akan mengembalikan FQDN Anda
sumber
myhostname
masuk ke/etc/hostname
(diikuti olehhostname myhostname
). Dan127.0.0.1 mydomain.com myhostname.com localhost
pergi ke/etc/hosts
. Plus isi ulangexim
untuk jaga-jaga.Saya memiliki masalah yang sama. Saya perlu mengubah nama host surat, karena beberapa email gagal, ketika dikirim. Dengan kesalahan ini:
Jadi saya mengubahnya menjadi
/etc/exim.config
param primary_hostnameBeberapa kode dari file ini:
sumber
di WHM goto Exim Configuration Manager -> Editor Tingkat Lanjut
gulir ke bawah hingga Anda menemukan "Tambahkan pengaturan konfigurasi tambahan" (tombol biru besar) dan klik.
di baris baru, tambahkan [primary_hostname] = [mydomain.com]
gulir ke bawah dan klik Simpan.
sumber