Назад | Перейти на главную страницу

В чем разница между «dnl» и «dnl #» в файле sendmail.mc?

В чем разница между 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

Есть тонкая, но важная разница между dnl и # Вот.

dnl средства "удалить через новую строку". Когда вы обрабатываете свой sendmail.mc в sendmail.cf с помощью m4 (или, возможно, какой-то интерфейс), персонажи dnl и все, что за ними следует, включая следующая новая строка будет удалена. (И все эти строки конец с участием dnl чтобы подавить лишние пустые строки в sendmail.cf вывод.)

Ничего не начинается с dnl через конец строки выйдет из sendmail.mc и в sendmail.cf.

Все, что остается в выводе, конечно же, будет либо конфигурацией sendmail, либо комментарием, начинающимся с #, который будет скопирован как есть в sendmail.cf, где они будут проигнорированы.

Все, что начинается с # и не удаленный выше превратится в sendmail.cf без возражений в качестве комментария.

В вашем примере кто-то хотел удалить все комментируемые функции из sendmail.cf, а также комментарии, поскольку комментарии были бы бессмысленными без присутствующих функций.

DNL означает «удалить через новую строку», что на самом деле означает «игнорировать все после 'dnl' до следующей строки».

"DNL #" - это просто искусственная номенклатура. Когда файл sendmail.mc был впервые разработан, они хотели, чтобы вы знали, что все, что было "dnl ...", было командой / параметром, которое было закомментировано, а все, что было "dnl # ..." было действительно описательным комментарием, который не была командой / параметром, который можно было бы раскомментировать, потому что '#' часто используется в начале строки, чтобы указать, что «то, что следует до конца строки», является комментарием.