Qual é a diferença entre “dnl” e “dnl #” em um arquivo sendmail.mc?

8

Qual é a diferença entre dnl e dnl # em um arquivo /etc/mail/sendmail.mc ? Se eu quiser ativar algo que precisa estar na frente? Da mesma forma, se eu quiser "comentar" algo, qual prefixo eu preciso?

Por exemplo:

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
    
por Mike B 08.02.2014 / 06:17

2 respostas

15

Há uma diferença sutil, mas importante, entre dnl e # aqui.

dnl significa "excluir por nova linha" . Quando você processa seu sendmail.mc em sendmail.cf usando m4 (ou possivelmente algum frontend), os caracteres dnl e tudo que os segue, incluindo a próxima nova linha, serão descartados. (E todas essas linhas terminam com dnl para suprimir linhas em branco extras na saída sendmail.cf .)

Nada começando com dnl até o final da linha sairá de sendmail.mc e em sendmail.cf .

Qualquer coisa que permaneça na saída, é claro, será a configuração do sendmail ou um comentário que comece com # , que será copiado como está em sendmail.cf , onde eles serão ignorados.

Qualquer coisa que comece com # e não seja excluída acima se transformará em sendmail.cf não ser comentado como comentário.

No seu exemplo, alguém queria que todos os recursos comentados fossem removidos de sendmail.cf , assim como os comentários, já que os comentários não teriam sentido sem os recursos presentes.

    
por 08.02.2014 / 06:41
3

DNL significa "delete through newline", o que realmente significa "ignorar tudo depois de 'dnl' até a próxima linha".

O "dnl #" é apenas nomenclatura artificial. Quando o arquivo sendmail.mc foi desenvolvido, eles queriam que você soubesse que qualquer coisa que fosse "dnl ..." era um comando / configuração que foi comentado e qualquer coisa que fosse "dnl # ..." era realmente um comentário descritivo que não era um comando / configuração que poderia ser descomentado porque '#' é frequentemente usado no início de uma linha para indicar que o que segue até o final da linha é um comentário.

    
por 04.06.2018 / 23:20

Tags