sendmail.mcファイルの「dnl」と「dnl#」の違いは何ですか?


10

違いは何である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

回答:


16

こことの間には微妙ですが重要な違いがdnlあり#ます。

dnl「改行で削除」を意味します。あなたを処理するときsendmail.mcsendmail.cf使用したm4(またはおそらくいくつかのフロントエンド)、文字dnl、すべて、それらを以下を含む次の改行は、削除されます。(これらの行はすべて、出力の余分な空白行を抑制するために終了します。)dnlsendmail.cf

dnl行の終わりから始まり、に出入りしないものはsendmail.mcありませんsendmail.cf

もちろん、出力に残っているものはすべてsendmail構成か、コメントがで始まり#、そのままにコピーされsendmail.cf、無視されます。

#上記で始まり、削除されていないsendmail.cfものは、コメントとして痴漢されます。

あなたの例では、コメントされsendmail.cfた機能が存在しないとコメントは無意味になるため、コメントされたすべての機能とコメントが削除されることを誰かが意味しました。


1
で行を終了する必要はありませんdnlで余分な空白行が発生しsendmail.cfます。そして、はい、何かを実行したい場合は、実際に存在する必要がありsendmail.cfます...
マイケルハンプトン

1
@MikeB m4は大文字と小文字を区別しますが、区別されDNLませんdnl。申し訳ありませんが、スタック交換サイトで非常に高いスコアのanswearsにいくつかの愚かなm4バグが見られました。
AnFi 2014

...つまり、明示的な構成オプションを有効にしたい場合は、その前dnlまたはdnl #前にあってはなりません...?そして、私は常にdnlでそれを終えたいですか?
Mike B

@ AndrzejA.Filipありがとう。サイトでは質問を編集できないため、再度追加しました。
マイクB

3

DNLは「改行で削除」を意味し、実際には「次の行まで「dnl」以降のすべてを無視する」ことを意味します。

「dnl#」は単なる人工的な命名法です。sendmail.mcファイルが最初に開発されたとき、「dnl ...」はすべてコメントアウトされたコマンド/設定であり、「dnl#...」はすべて実際に説明的なコメントであることを知ってほしいと考えていました。 「#」は「行末まで続く」がコメントであることを示すために行頭でよく使用されるため、コメント解除できるコマンド/設定ではありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.