¿Cuál es la diferencia entre "dnl" y "dnl #" en un archivo sendmail.mc?

10

¿Cuál es la diferencia entre dnly dnl #en un /etc/mail/sendmail.mcarchivo? Si quiero habilitar algo, ¿qué necesita estar delante? Del mismo modo, si quiero "comentar" algo, ¿qué prefijo necesito?

Por ejemplo:

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
fuente

Respuestas:

16

Hay una diferencia sutil pero importante entre dnly #aquí.

dnlsignifica "eliminar a través de nueva línea" . Al procesar tu sendmail.mcen un sendmail.cfusando m4(o posiblemente algún frontend), los personajes dnly todo después de ellos, incluyendo el siguiente salto de línea, será dado de baja. (Y todas esas líneas terminan con dnlpara suprimir líneas en blanco adicionales en la sendmail.cfsalida).

Nada que comience dnlhasta el final de la línea lo hará salir sendmail.mcy entrar sendmail.cf.

Todo lo que quede en la salida, por supuesto, será la configuración de sendmail o un comentario que comience #, que se copiará tal sendmail.cfcual, donde se ignorará.

Cualquier cosa que comience #y no se elimine arriba hará que no se sendmail.cfmoleste como comentario.

En su ejemplo, alguien quiso eliminar todas las características comentadas sendmail.cf, así como los comentarios, ya que los comentarios no tendrían sentido sin las características presentes.

Michael Hampton
fuente
1
No tiene que terminar una línea, dnlpero terminará con líneas en blanco adicionales sendmail.cf. Y sí, si quieres que algo surta efecto, debe estar presente en sendmail.cf...
Michael Hampton
1
@MikeB m4 distingue entre mayúsculas y minúsculas, DNLno lo es dnl. Lo siento, pero he visto algunos errores m4 estúpidos en answears con puntajes muy altos en los sitios de Stack Exchange.
AnFi
... y eso significa que si quiero que una opción de configuración explícita surta efecto, ¿NO debe tenerla dnlo estar dnl #frente a ella ...? y siempre querré terminarlo con dnl?
Mike B
@ AndrzejA.Filip Gracias. El sitio no me permitió editar la pregunta, así que la volví a agregar.
Mike B
3

DNL significa "eliminar a través de nueva línea", lo que realmente significa "ignorar todo después de 'dnl' hasta la siguiente línea".

El "dnl #" es solo una nomenclatura artificial. Cuando se desarrolló por primera vez el archivo sendmail.mc, querían que supiera que todo lo que era "dnl ..." era un comando / configuración que fue comentado y que todo lo que era "dnl # ..." fue realmente un comentario descriptivo que no era un comando / configuración que no se podía comentar porque '#' se usa a menudo al comienzo de una línea para indicar "lo que sigue hasta el final de la línea" es un comentario.

TekOps
fuente