![Postfix를 사용하여 수신 메일에 단일 헤더를 추가하는 방법은 무엇입니까?](https://rvso.com/image/776284/Postfix%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%88%98%EC%8B%A0%20%EB%A9%94%EC%9D%BC%EC%97%90%20%EB%8B%A8%EC%9D%BC%20%ED%97%A4%EB%8D%94%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음과 같이 master.cf에 구성된 여러 smtpd 프로세스로 Postfix를 실행하고 있습니다.
# Internet facing one
1.2.3.4:25 inet n - y - - smtpd
-o ... # internet-only overrides
# Internal facing one
10.0.0.1:10026 inet n - y - - smtpd
-o ... # internal-only overrides
이제 정적 이름과 값이 포함된 단일 헤더를 추가하고 싶습니다.들어오는수신된 smtpd에 따라 메일이 달라집니다.
예:
X-Gert-Postfix-Received-From: the evil internet
고려한 옵션:
추가
header_checks
옵션을 선택하고PREPEND
파일의 작업을 사용합니다.거의 다 왔으나:
- 기존 헤더와 일치해야 하며 이후 일치 항목에 헤더를 하나 더 추가합니다.
- 항상 특정 헤더가 이미 존재하는 것은 아닙니다.
From
예를 들어 a가 누락된 경우도 있습니다. - 기존 파일이 있는 경우
header_checks
두 개의 파일을 쌓는 쉬운 방법은 없다고header_check
생각합니다.
다음을 사용하는 맞춤형 앱을 구축하세요.밀터 프로토콜를 사용하여 Postfix에 연결합니다
smtpd_milters
.물론, 이것은 효과가 있을 것입니다. 내 앱에서 메일을 검사한 다음 거기에 헤더를 삽입할 수 있습니다. 헤더 추가와 같은 간단한 작업에는 과도한 엔지니어링이 필요한 것 같습니다. 또한 다른 데몬 앱, 일부 상용구 코드 등을 실행해야 하기 때문에 추가 유지 관리가 필요합니다.
의견에서 제안한 대로
check_recipient_access
(관련 Q).header_checks
(1 참조) 와 동일한 단점 .
뭔가 단순한 것이 빠진 것 같은 느낌이 듭니다. 더 좋은 아이디어 있는 사람 있나요?
답변1
기존 header_check가 있는 경우 두 개의 header_check 파일을 쌓는 쉬운 방법은 없다고 생각합니다.
실제로 데몬당 여러 개의 독립적인 header_checks 파일을 갖는 방법이 있습니다.
각-영형master.cf의 옵션은 main.cf의 기본값이나 postfix 구성 매개변수를 재정의합니다. 데몬마다 다른 header_checks를 가지려면(예:/etc/postfix/header_checks1그리고/etc/postfix/header_checks2), 각각을 재정의해야 합니다.header_checks매개변수:
# Internet facing one
1.2.3.4:25 inet n - y - - smtpd
-o header_checks = regexp:/etc/postfix/header_checks1
# Internal facing one
10.0.0.1:10026 inet n - y - - smtpd
-o header_checks = regexp:/etc/postfix/header_checks2
이렇게 하면 완전히 독립하게 됩니다.header_checkssmtpd 데몬당 파일. 여기에서 언급한 태그 앞에 추가하는 규칙을 추가할 수 있습니다.
답변2
다음의 제한 사항을 해결하려면 smtpd_*_restrictions
:
보낸 사람이 "null"인 메시지라도 봉투 보낸 사람은 정확히 한 명입니다. 따라서 check_sender_access
대신 사용하십시오 check_recipient_access
. 사용된 조회 유형은 static:
반환 경로의 세부 사항에 관심이 없기 때문일 수 있습니다 . 결과 를 생성하는 검사를 수행하기 전에 smtpd_sender_restrictions 목록에 이를 추가하십시오 ACCEPT
(접미사는 그 이상의 추가 조회를 쿼리하지 않습니다).
# in main.cf
common_sender_restrictions =
reject_non_fqdn_sender
reject_unknown_sender_domain
..
internet_sender_restrictions =
$common_sender_restrictions
check_sender_access static:{PREPEND X-Gert-Postfix-Received-From: the evil internet}
# in master.cf
192.0.2.0:25 inet n - y - - smtpd
-o smtpd_sender_restrictions=$internet_sender_restrictions
10.0.0.1:10026 inet n - y - - smtpd
-o smtpd_sender_restrictions=$common_sender_restrictions