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

10

Qual é a diferença entre dnle dnl #em um /etc/mail/sendmail.mcarquivo? Se eu quiser ativar algo, o que precisa estar na frente? Da mesma forma, se eu quiser "comentar" alguma coisa, de que prefixo 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
Mike B
fonte

Respostas:

16

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

dnlsignifica "excluir através da nova linha" . Quando você processar o seu sendmail.mcem um sendmail.cfusando m4(ou possivelmente algum frontend), os personagens dnle tudo segui-los, incluindo o final da linha, será descartado. (E todas essas linhas terminam com dnlpara suprimir linhas em branco extras na sendmail.cfsaída.)

Nada que comece com o dnlfinal da linha vai sair sendmail.mce entrar 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á sendmail.cf, onde será ignorado.

Qualquer coisa que comece com #e não seja excluída acima fará com que não seja sendmail.cfmolestada como um comentário.

No seu exemplo, alguém pretendia remover todos os recursos comentados sendmail.cfe os comentários, pois os comentários não teriam sentido sem os recursos presentes.

Michael Hampton
fonte
1
Você não precisa terminar uma linha, dnlmas terá linhas em branco extras sendmail.cf. E sim, se você quiser algo para entrar em vigor, deve realmente estar presente em sendmail.cf...
Michael Hampton
1
@MikeB m4 faz distinção entre maiúsculas e minúsculas - DNLnão é dnl. Desculpe, mas já vi alguns erros estúpidos do m4 em respostas com pontuações muito altas nos sites do Stack Exchange.
AnFi
... e isso significa que, se eu quiser que uma opção de configuração explícita entre em vigor, NÃO deve ter dnlou estar dnl #na frente ...? e eu sempre vou querer terminar com dnl?
Mike B
@ AndrzejA.Filip Obrigado. O site não me permitiu editar a pergunta, então eu a adicionei novamente.
Mike B
3

DNL significa "excluir através de nova linha", que realmente significa "ignorar tudo após '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 era "dnl ..." era um comando / configuração comentada e qualquer coisa que era "dnl # ..." era realmente um comentário descritivo que não era um comando / configuração que pudesse ser descomentado porque '#' é freqüentemente usado no início de uma linha para indicar "o que segue até o final da linha" é um comentário.

TekOps
fonte