Postfix를 사용하여 수신 메일에 단일 헤더를 추가하는 방법은 무엇입니까?

Postfix를 사용하여 수신 메일에 단일 헤더를 추가하는 방법은 무엇입니까?

다음과 같이 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

고려한 옵션:

  1. 추가header_checks옵션을 선택하고 PREPEND파일의 작업을 사용합니다.

    거의 다 왔으나:

    • 기존 헤더와 일치해야 하며 이후 일치 항목에 헤더를 하나 더 추가합니다.
    • 항상 특정 헤더가 이미 존재하는 것은 아닙니다. From예를 들어 a가 누락된 경우도 있습니다.
    • 기존 파일이 있는 경우 header_checks두 개의 파일을 쌓는 쉬운 방법은 없다고 header_check생각합니다.
  2. 다음을 사용하는 맞춤형 앱을 구축하세요.밀터 프로토콜를 사용하여 Postfix에 연결합니다 smtpd_milters.

    물론, 이것은 효과가 있을 것입니다. 내 앱에서 메일을 검사한 다음 거기에 헤더를 삽입할 수 있습니다. 헤더 추가와 같은 간단한 작업에는 과도한 엔지니어링이 필요한 것 같습니다. 또한 다른 데몬 앱, 일부 상용구 코드 등을 실행해야 하기 때문에 추가 유지 관리가 필요합니다.

  3. 의견에서 제안한 대로 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

관련 정보