Qual è la differenza tra "dnl" e "dnl #" in un file sendmail.mc?


10

Qual è la differenza tra dnle dnl #in un /etc/mail/sendmail.mcfile? Se voglio abilitare qualcosa che deve essere di fronte? Allo stesso modo, se voglio "commentare" qualcosa, quale prefisso ho bisogno?

Per esempio:

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

Risposte:


16

C'è una differenza sottile ma importante tra dnle #qui.

dnlsignifica "elimina tramite newline" . Quando trasformi il tuo sendmail.mcin un sendmail.cfutilizzo m4(o forse un frontend), i personaggi dnle tutto ciò che li segue, inclusa la nuova riga successiva, verranno eliminati. (E tutte quelle righe terminano con la dnlsoppressione di ulteriori righe vuote sendmail.cfnell'output.)

Nulla che inizia con la dnlfine della linea lo farà da sendmail.mce in sendmail.cf.

Qualunque cosa rimanga nell'output, ovviamente, sarà la configurazione di sendmail o un commento che inizia con #, che verrà copiato così com'è sendmail.cf, dove verrà ignorato.

Tutto ciò che inizia con #e non cancellato sopra lo renderà non sendmail.cfcommentato come commento.

Nel tuo esempio, qualcuno intendeva rimuovere tutte le funzionalità commentate sendmail.cf, così come i commenti, poiché i commenti sarebbero privi di significato senza le funzionalità presenti.


1
Non si dispone di terminare una linea con dnl, ma si ritroverà con righe vuote supplementari in sendmail.cf. E sì, se vuoi che qualcosa abbia effetto, in realtà deve essere presente in sendmail.cf...
Michael Hampton

1
@MikeB m4 fa distinzione tra maiuscole e minuscole - DNLnon lo è dnl. Scusate ma ho visto alcuni stupidi bug m4 in answear con punteggi molto alti nei siti Stack Exchange.
AnFi

... e quindi ciò significa che se voglio che un'opzione di configurazione esplicita abbia effetto NON deve avere dnlo dnl #di fronte ad essa ...? e vorrò finirlo sempre con dnl?
Mike B,

@ AndrzejA.Filip Grazie. Il sito non mi ha permesso di modificare la domanda, quindi l'ho aggiunta di nuovo.
Mike B,

3

DNL significa "elimina tramite newline" che in realtà significa "ignora tutto dopo 'dnl' fino alla riga successiva".

Il "dnl #" è solo una nomenclatura artificiale. Quando il file sendmail.mc è stato sviluppato per la prima volta, volevano che tu sapessi che tutto ciò che era "dnl ..." era un comando / impostazione che era stato commentato e tutto ciò che era "dnl # ..." era davvero un commento descrittivo che non era un comando / impostazione che poteva essere decommentato perché '#' è spesso usato all'inizio di una riga per indicare "ciò che segue fino alla fine della riga" è un commento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.