Was ist der Unterschied zwischen "dnl" und "dnl #" in einer sendmail.mc-Datei?

10

Was ist der Unterschied zwischen dnlund dnl #in einer /etc/mail/sendmail.mcDatei? Wenn ich etwas aktivieren möchte, was muss vorne sein? Welches Präfix benötige ich ebenfalls, wenn ich etwas "auskommentieren" möchte?

Zum Beispiel:

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.
quelle

Antworten:

16

Es gibt einen subtilen, aber wichtigen Unterschied zwischen dnlund #hier.

dnlbedeutet "durch Zeilenumbruch löschen" . Wenn Sie Ihre Verwendung sendmail.mczu einem sendmail.cfusing m4(oder möglicherweise einem Frontend) verarbeiten, werden die Zeichen dnlund alles, was darauf folgt, einschließlich der nächsten neuen Zeile, gelöscht. (Und alle diese Zeilen enden mit dnl, um zusätzliche Leerzeilen in der sendmail.cfAusgabe zu unterdrücken .)

Nichts, was mit dnlbis zum Ende der Zeile beginnt, schafft es aus sendmail.mcund hinein sendmail.cf.

Alles, was in der Ausgabe verbleibt, ist natürlich entweder eine sendmail-Konfiguration oder ein Kommentar, der mit beginnt #und in den Ist-Zustand kopiert wird sendmail.cf, wo er ignoriert wird.

Alles, was oben beginnt #und nicht gelöscht wird, wird sendmail.cfals Kommentar unbehelligt.

In Ihrem Beispiel bedeutete jemand, dass alle kommentierten Funktionen sendmail.cfsowie die Kommentare entfernt werden sollten, da die Kommentare ohne die vorhandenen Funktionen bedeutungslos wären.

Michael Hampton
quelle
1
Sie müssen nicht haben , um eine Linie enden mit , dnlaber Sie werden mit zusätzlichen Leerzeilen am Ende sendmail.cf. Und ja, wenn Sie möchten, dass etwas wirksam wird, muss es tatsächlich vorhanden sein in sendmail.cf...
Michael Hampton
1
@MikeB m4 unterscheidet zwischen Groß- und Kleinschreibung - DNLnicht dnl. Tut mir leid, aber ich habe ein paar dumme m4-Fehler in Antworten mit sehr hohen Punktzahlen auf Stack Exchange-Sites gesehen.
AnFi
... und das heißt, wenn ich möchte, dass eine explizite Konfigurationsoption wirksam wird, darf sie NICHT dnloder dnl #davor stehen ...? und ich will es immer mit dnl beenden?
Mike B
@ AndrzejA.Filip Danke. Auf der Website konnte ich die Frage nicht bearbeiten, sodass ich sie erneut hinzufügte.
Mike B
3

DNL bedeutet "durch Zeilenumbruch löschen", was wirklich bedeutet "alles nach 'dnl' bis zur nächsten Zeile ignorieren".

Das "dnl #" ist nur eine künstliche Nomenklatur. Als die sendmail.mc-Datei zum ersten Mal entwickelt wurde, wollten sie, dass Sie wissen, dass alles, was "dnl ..." war, ein Befehl / eine Einstellung war, die auskommentiert wurde, und alles, was "dnl # ..." war, wirklich ein beschreibender Kommentar war war kein Befehl / keine Einstellung, die nicht kommentiert werden konnte, da '#' häufig am Anfang einer Zeile verwendet wird, um anzugeben, dass "was bis zum Ende der Zeile folgt" ein Kommentar ist.

TekOps
quelle