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


10

是什么区别dnl,并dnl #在一个/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

Answers:


16

有之间的微妙但重要的区别dnl,并#在这里。

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

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

当然,输出中保留的任何内容都将是sendmail配置,或者是以开头的注释,该注释#将原样复制到中sendmail.cf,而它们将被忽略。

上面任何#未删除的内容都将sendmail.cf被注释。

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


1
你不具备,终止与行dnl,但你会用多余的空行结束sendmail.cf。是的,如果您希望某些东西生效,它实际上必须存在于sendmail.cf……
Michael Hampton

1
@MikeB m4区分大小写- DNL不是dnl。抱歉,但我在Stack Exchange网站上看到了一些愚蠢的M4错误,且得分很高。
AnFi 2014年

...,这意味着如果我希望显式配置选项生效,则它一定不能没有dnldnl #在它前面...?而且我想总是以dnl结尾吗?
Mike B

@ AndrzejA.Filip谢谢。该网站不允许我编辑问题,所以我重新添加了它。
Mike B

3

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

“ dnl#”仅是人为命名。最初开发sendmail.mc文件时,他们希望您知道“ dnl ...”是被注释掉的命令/设置,而“ dnl#...”则是描述性注释,不是一个不能注释的命令/设置,因为通常在行的开头使用'#'来表示“直到行末的内容”是注释。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.