sendmail.mc 文件中的“dnl”和“dnl #”有什么区别?

Mik*_*e B 12 sendmail

dnldnl #/etc/mail/sendmail.mc文件中有什么区别?如果我想启用某些东西需要在前面吗?同样,如果我想“注释掉”某些东西,我需要什么前缀?

例如:

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
Run Code Online (Sandbox Code Playgroud)

Mic*_*ton 18

dnl#这里之间有一个微妙但重要的区别。

dnl意思是“通过换行删除”。当你处理你sendmail.mcsendmail.cf使用m4(或可能是某个前端)时,字符dnl和它们后面的所有内容,包括下一个换行符,都将被删除。(而所有这些线路的结束dnl在抑制多余的空行sendmail.cf输出。)

开头没有dnl通过的线路年底将做出来的sendmail.mc和成sendmail.cf

当然,输出中保留的任何内容要么是 sendmail 配置,要么是以 开头的注释#,它们将按原样复制到 中sendmail.cf,在那里它们将被忽略。

#上面以开头和未删除的任何内容都将使其成为sendmail.cf不受干扰的评论。

在您的示例中,有人打算从 中删除所有评论功能sendmail.cf以及评论,因为如果没有这些功能,评论将毫无意义。


Tek*_*Ops 5

DNL 的意思是“通过换行符删除”,这实际上意味着“忽略‘dnl’之后直到下一行的所有内容”。

“dnl #”只是人为的命名法。当 sendmail.mc 文件首次开发时,他们希望您知道任何“dnl ...”都是被注释掉的命令/设置,而任何“dnl #...”实际上都是描述性注释,不是可以取消注释的命令/设置,因为“#”经常用在行的开头来指示“行尾之前的内容”是注释。