sendmail.mc 파일에서“dnl”과“dnl #”의 차이점은 무엇입니까?


10

차이점은 무엇이고 dnl및 dnl #A의 /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.mc에 sendmail.cf사용 m4(또는 아마도 일부 프론트 엔드), 문자 dnl와 모든 것을 그들에게 다음 을 포함하여 다음 줄 바꿈은 삭제됩니다. (그리고 그 라인을 모두 종료 와 함께 dnl의 억제 빈 줄을 sendmail.cf출력.)

로 시작하는 것도 dnl라인의 끝을 통해이의 그것을 만들 것 sendmail.mc와로 sendmail.cf.

물론 출력에 남아있는 것은 sendmail 구성이거나으로 시작하는 주석이며 #그대로 복사되어 sendmail.cf무시됩니다.

#위에서 시작하여 삭제하지 sendmail.cf않은 내용은 주석으로 표시됩니다.

귀하의 예에서 누군가 sendmail.cf주석이있는 기능이 없으면 의미가 없으므로 주석이있는 모든 주석 기능이 주석에서 제거되도록 의도했습니다 .


1
당신은하지 않습니다 이 있는 선을 종료 dnl하지만 당신은 내 간이 빈 라인을하게 될 겁니다 sendmail.cf. 그리고 네, 무언가를 적용하기를 원한다면 실제로 존재해야합니다 sendmail.cf.
— Michael Hampton

1
- @MikeB m4는 대소 문자 구분이 DNL되지 않습니다 dnl. 죄송하지만 Stack Exchange 사이트에서 매우 높은 점수를 얻은 answears에서 바보 같은 m4 버그를 보았습니다.
— AnFi

... 그래서 내가 명시 적으로 구성 옵션은하지 않아야 효과가 먹고 싶어 수단 경우 것으로 dnl나 dnl #... 그것의 앞에을? 그리고 항상 dnl로 끝내고 싶습니까?
— Mike B

@ AndrzejA.Filip 감사합니다. 사이트에서 질문을 편집 할 수 없어서 다시 추가했습니다.
— Mike B

3

DNL은 "줄 바꾸기를 통한 삭제"를 의미하며, "다음 줄까지 'dnl'뒤에있는 모든 것을 무시합니다"를 의미합니다.

"dnl #"은 단지 인공적인 명칭입니다. sendmail.mc 파일이 처음 개발되었을 때 "dnl ..."인 것은 주석 처리 된 명령 / 설정이고 "dnl # ..."인 것은 실제로 설명적인 주석이라는 것을 알기를 원했습니다. '#'은 종종 줄의 시작 부분에서 "줄 끝까지 따르는 것"이 ​​주석임을 나타 내기 때문에 주석 해제 될 수있는 명령 / 설정이 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.