Apa perbedaan antara "dnl" dan "dnl #" dalam file sendmail.mc?

10

Apa perbedaan antara dnldan dnl #dalam /etc/mail/sendmail.mcfile? Jika saya ingin mengaktifkan sesuatu, apa yang harus ada di depan? Demikian juga, jika saya ingin "berkomentar" sesuatu, awalan apa yang saya butuhkan?

Sebagai contoh:

dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well
dnl #
dnl FEATURE(masquerade_entire_domain)dnl
dnl #
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(foo.com)dnl
dnl MASQUERADE_DOMAIN(foo2.lan)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl
Mike B
sumber

Jawaban:

16

Ada perbedaan kecil namun penting antara dnldan di #sini.

dnlberarti "hapus melalui baris baru" . Saat Anda mengolahnya sendmail.mcmenjadi sendmail.cfmenggunakan m4(atau mungkin beberapa frontend), karakter dnldan semua yang mengikutinya, termasuk baris baru berikutnya, akan dihapus. (Dan semua garis tersebut diakhiri dengan dnlmenekan garis kosong ekstra di sendmail.cfoutput.)

Tidak ada yang dimulai dengan dnlmelalui ujung garis akan keluar sendmail.mcdan masuk sendmail.cf.

Apa pun yang tetap dalam output, tentu saja, baik konfigurasi sendmail, atau komentar yang dimulai dengan #, yang akan disalin apa adanya sendmail.cf, di mana mereka akan diabaikan.

Apa pun yang dimulai dengan #dan tidak dihapus di atas akan membuatnya menjadi sendmail.cftanpa gangguan sebagai komentar.

Dalam contoh Anda, seseorang bermaksud menghapus semua fitur yang dikomentari sendmail.cf, dan juga komentar, karena komentar tidak akan berarti tanpa fitur yang ada.

Michael Hampton
sumber
1
Anda tidak harus berakhir garis dengan dnltetapi Anda akan berakhir dengan baris kosong ekstra dalam sendmail.cf. Dan ya, jika Anda ingin sesuatu berlaku, itu harus benar-benar hadir di sendmail.cf...
Michael Hampton
1
@MikeB m4 peka huruf besar-kecil - DNLtidak dnl. Maaf, tetapi saya telah melihat beberapa bug m4 bodoh dalam menjawab dengan skor sangat tinggi di situs Stack Exchange.
AnFi
... dan itu berarti jika saya ingin opsi konfigurasi eksplisit untuk mengambil efek itu TIDAK boleh memiliki dnlatau dnl #di depannya ...? dan saya ingin selalu mengakhirinya dengan dnl?
Mike B
@ AndrzejA.Filip Terima kasih. Situs tidak akan membiarkan saya mengedit pertanyaan jadi saya menambahkannya kembali.
Mike B
3

DNL berarti "hapus melalui baris baru" yang benar-benar berarti "abaikan semuanya setelah 'dnl' hingga baris berikutnya".

"Dnl #" hanyalah nomenklatur buatan. Ketika file sendmail.mc pertama kali dikembangkan, mereka ingin Anda tahu bahwa apa pun yang "dnl ..." adalah perintah / pengaturan yang dikomentari dan apa pun yang "dnl # ..." benar-benar komentar deskriptif yang bukan perintah / pengaturan yang dapat dibatalkan komentar karena '#' sering digunakan pada awal baris untuk menunjukkan "apa yang mengikuti sampai akhir baris" adalah komentar.

TekOps
sumber