Điểm:0

How to add a single header for any incoming mail with Postfix?

lá cờ id

I have Postfix running with a number of smtpd processes configured in master.cf like this:

# 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

Now, I'd like to add a single header, with static name and value, to incoming mail depending on which smtpd it was received on.

Example:

X-Gert-Postfix-Received-From: the evil internet

My options considered:

  1. Add the header_checks option and use the PREPEND action in the file.

    Nearly there, but:

    • It requires to match an existing header and will then add one more on subsequent matches.
    • I don't always have a certain header present already, perhaps even a From is missing, for example.
    • In case you have existing header_checks, there's no easy way to stack two header_check files, I think.
  2. Build a custom app that uses the Milter protocol and hook that up to Postfix with smtpd_milters.

    Of course, this will work. I can inspect the mail in my own app, then inject the header there. Seems over-engineering for a simple task like adding a header. Additionally, it requires extra maintenance with the need to run another daemon app, quite some boilerplate code, etc.

  3. As suggested in a comment, use check_recipient_access (related Q).

    Same downsides as header_checks (see 1).

I feel like I'm missing something simple. Anyone got a better idea?

lá cờ in
Điều này có trả lời câu hỏi của bạn không? [Thêm tiêu đề tùy chỉnh vào Postfix với miền được chuyển tiếp](https://serverfault.com/questions/693904/add-a-custom-header-to-postfix-with-the-relayed-domain)
lá cờ id
@GeraldSchneider Không hẳn, check_recipient_access có nhược điểm giống như header_checks, tôi e là vậy.
anx avatar
lá cờ fr
anx
Các tham số postfix chỉ định các bảng tra cứu chỉ là danh sách các tham chiếu `type:name` được phân tách bằng dấu phẩy/dấu cách, do đó *là* một cách dễ dàng để xếp chúng. Tôi định đề xuất sử dụng câu trả lời đó cùng với `always_add_missing_headers=yes`, nhưng tôi không chắc liệu đó có phải là câu trả lời hoàn chỉnh hay không (vì tài liệu ở một số nơi nghe có vẻ như `dọn dẹp` chỉ thêm các tiêu đề bị thiếu một lần *sau khi xử lý `header_checks` )
Điểm:0
lá cờ in

Trong trường hợp bạn có header_checks hiện có, tôi nghĩ không có cách nào dễ dàng để xếp chồng hai tệp header_check.

Thực sự có một cách để có nhiều tệp header_checks độc lập trên mỗi daemon.

mỗi -o tùy chọn trong master.cf của bạn sẽ ghi đè giá trị mặc định hoặc bất kỳ tham số cấu hình hậu tố nào trong main.cf. Để có một header_checks khác nhau trên mỗi daemon (giả sử /etc/postfix/header_checks1/etc/postfix/header_checks2), bạn phải ghi đè từng tiêu đề_checks tham số:

# Internet đối mặt với một
1.2.3.4:25 inet n - y - - smtpd
-o header_checks = regrec:/etc/postfix/header_checks1

# Nội bộ phải đối mặt với một
10.0.0.1:10026 inet n - y - - smtpd
-o header_checks = regrec:/etc/postfix/header_checks2

Bằng cách này, bạn sẽ hoàn toàn độc lập tiêu đề_checks tệp trên mỗi daemon smtpd. Từ đó, bạn có thể thêm các quy tắc TRƯỚC thẻ mà bạn đang nói đến.

lá cờ id
Tôi đã xem xét điều này, nhưng như tôi đã nói: 1) nó sẽ ghi đè các tệp header_checks thông thường của tôi. 2) tất cả các nhược điểm của header_checks nói chung. Tôi có email đến từ các nguồn không đáng tin cậy như internet trên toàn thế giới. Không chắc làm thế nào đây là một câu trả lời cho câu hỏi của tôi vì về cơ bản đây là câu hỏi của tôi.
lá cờ id
Để được rõ ràng; nếu bạn có logic chung hiện có trong `header_checks` của `main.cf`, thì quyền ghi đè trong `master.cf` sẽ che dấu nó. Đây là một tính năng, nhưng là nhược điểm/vấn đề trong trường hợp này.
FatRabbit avatar
lá cờ in
nếu bạn cần một header_checks chung cho cả hai daemon, chỉ cần thêm lại nó vào cả hai phần 'ghi đè', bạn có thể có bao nhiêu header_checks tùy thích, chỉ cần liệt kê chúng. master.cf không hỗ trợ khoảng trắng nên bạn cần lưu trữ danh sách các tệp header_checks của mình trong một biến.
Điểm:0
lá cờ fr
anx

Để khắc phục những hạn chế của smtpd_*_restrictions:

Một tin nhắn - ngay cả một tin nhắn có người gửi "null" - có chính xác một người gửi phong bì. Vì vậy, sử dụng check_sender_access thay vì check_recipient_access. Loại tra cứu được sử dụng có thể là tĩnh: bởi vì chúng tôi không quan tâm đến các chi tiết cụ thể của đường dẫn trở lại. Thêm nó vào danh sách smtpd_sender_restrictions của bạn trước khi tạo bất kỳ kiểm tra nào CHẤP NHẬN kết quả (postfix sẽ không truy vấn tra cứu bổ sung ngoài).

# trong main.cf
common_sender_restrictions =
  reject_non_fqdn_sender
  reject_unknown_sender_domain
  ..
internet_sender_restrictions =
  $common_sender_restrictions
  check_sender_access tĩnh:{PREPEND X-Gert-Postfix-Received-From: mạng internet độc ác}

# trong 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
lá cờ id
Điều này nghe có vẻ rất thú vị và gọn gàng. Hãy để tôi thử điều này sau!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.