Postfix: chọn máy chủ chuyển tiếp dựa trên From: tiêu đề thư chứ không phải người gửi phong bì


9

Tôi đã đặt thành công Postfix để chuyển tiếp email qua Mandrill bằng cách sử dụng SASL và sender_dependent_relayhost_mapsvới bảng MySQL để những người gửi khác kết nối với Mandrill bằng tên người dùng và khóa API của Mandrill.

Cho đến nay vẫn tốt, nhưng tôi đã có ba người dùng sử dụng Nhà cung cấp dịch vụ email và Người gửi trong phong bì thư được đặt thành "mailer@infusionmail.com" cho cả ba người dùng và là nơi duy nhất chứa email của người dùng thực tế địa chỉ nằm trong tiêu đề From: email .

Tôi hài lòng với tính bảo mật (hoặc thiếu) khi sử dụng tiêu đề Email: vì tôi chỉ chuyển tiếp thư được gửi đến các địa chỉ email cụ thể được kiểm soát chặt chẽ, nhưng tôi thực sự biết ơn những đề xuất về cách tôi có thể tốt nhất chỉ định rơle dựa trên giá trị của tiêu đề From : . Có cách nào để đặt giá trị phong bì giống như trường Từ không? Hoặc có cách nào khác để làm điều này?


Có phải ba người dùng đã sử dụng cùng một chứng chỉ SASL?
masegaloeh

Không, mỗi người có một chứng chỉ SASL khác nhau. Khi họ gửi thư trực tiếp từ ứng dụng gửi thư của họ, nó sẽ xác định chính xác chuyển tiếp thư và thông tin đăng nhập của họ dựa trên địa chỉ gửi của họ. Việc sử dụng ESP của infusionmail.com khiến cho giai đoạn này không thể thực hiện cùng một tra cứu dựa trên người gửi, vì người gửi giống nhau và chỉ có tiêu đề Từ: email khác nhau.
Adrian Savage

Câu trả lời:


5

Dựa trên chủ đề này trong danh sách gửi thư postfix: vận chuyển khác nhau cho tất cả thư được giới thiệu qua sendmail (1) , có vẻ như trường hợp của bạn là có thể. Thật không may, bạn không thể chỉ dựa vào hai bảng sender_dependent_relayhost_mapssmtp_sasl_password_maps. Bạn cần sửa đổi master.cf. Ý tưởng được sử dụng header_checksđể định tuyến email đến các phương tiện giao thông khác nhau. Sau đó, trong mỗi lần vận chuyển, chúng tôi xác định máy khách smtp sử dụng thông tin xác thực và chuyển tiếp độc lập.

Đầu tiên xác định header_checks trong main.cf và bảng pcre của nó

#main.cf
header_checks = pcre:/etc/postfix/header_dependent_relay

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/       smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/       smtp3:[host3.example.com]

Tốt, bây giờ chúng ta thiết lập smtp1, smtp2, smtp3vận chuyển trong master.cf

#master.cf
smtp1    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
smtp3    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp3.relay

Tệp smtpX.relaycó nội dung tương tự, ví dụ:

[hostX.example.com]   userX:passwordX

Tuyên bố từ chối trách nhiệm:


0

Điều này làm việc với tôi với một thay đổi: hành động "LỌC" cần được thêm vào trong tệp tiêu đề_deperee_relay :

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       FILTER smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/       FILTER smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/       FILTER smtp3:[host3.example.com]

Xem http://www.postfix.org/header_checks.5.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.