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

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

例如:

 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 

    dnl#这里有一个细微但重要的区别。

    dnl意思是“通过换行删除” 。 当你使用m4 (或可能是某个前端)将sendmail.mcsendmail.cfdnl及其后的所有字符( 包括下一个换行符)将被删除。 (所有这些行以dnl 结尾 ,以抑制sendmail.cf输出中的多余空行。)

    如果没有以dnl结尾的行,将会使其从sendmail.mcsendmail.cf删除。

    当然,输出中的任何内容都将是sendmailconfiguration或以#开始的注释,它将被原样复制到sendmail.cf ,在那里它们将被忽略。

    任何以#开始并且没有被删除的东西都会使sendmail.cf作为注释被解除。

    在你的例子中,有人意味着要从sendmail.cf删除所有的注释function,以及注释,因为如果没有这些function,注释将变得毫无意义。