Làm cách nào để thực thi địa chỉ người gửi để được đăng nhập-in-user@example.org tại Postfix?


15

Tôi đã thiết lập một máy chủ Postfix với SMTP AUTH (STARTTLS trên cổng 587). Tất cả người dùng của tôi đều ở trong miền "example.org". Tôi muốn thực thi địa chỉ người gửi là "log-in-user@example.org".

Tôi đã học được rằng điều này có thể đạt được với các tùy chọn main.cf

smtpd_sender_restrictions = reject_sender_login_mismatch, ...
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps

với tệp login_maps như:

a@example.org a
b@example.org b
c@example.org c
...

(xem thêm Chặn giả mạo địa chỉ người gửi bằng SMPT AUTH ), nhưng điều này có nghĩa là tôi sẽ phải chỉnh sửa tệp login_maps mỗi khi tôi có người dùng mới. Tôi không cần một ánh xạ linh hoạt như vậy: Nó phải luôn là "log-in-user@example.org". Có một lựa chọn dễ dàng hơn?

Câu trả lời:


14

Trước tiên, hãy kiểm tra xem cài đặt Postfix của bạn có hỗ trợ pcre hay không bằng cách nhập lệnh postconf -mvà tìm kiếm một dòng có pcretrong đó. Khi bạn đã xác minh rằng bạn có hỗ trợ pcre, bạn có thể làm như sau:

/etc/postfix/login_maps.pcre:

/^(.*)@example\.org$/   ${1}

Trong main.cf:

smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre

Điều này sẽ làm việc tốt.


Đây là hoàn hảo. Chính xác những gì tôi đang tìm kiếm!
Chris Lercher

3
Đối với người dùng Ubuntu, bạn có thể nhận được postfix pcre với sudo apt-get install postfix-pcre. Có lẽ điều này là hiển nhiên với hầu hết.
NeilMonday

Không có cách nào để bỏ qua tên miền trong regex hoặc $myhostnamebiến tham chiếu ?. Tại đây bạn có thể thấy rằng Postfix có khả năng tìm kiếm bảng tra cứu theo phần người dùng của email ...
Jaime Hablutzel

Tôi tin rằng bạn sẽ muốn gạch chéo ngược - thoát khỏi '.' ký tự trong tên miền vì vậy nó được hiểu là một trận đấu theo nghĩa đen: / ^ (..* )@example\.org$/
Arnon

Mặt khác, điều này khớp với "test @ exampleXorg" cũng như "test@example.org", có thể không chính xác là hành vi dự định.
Arnon

6

Regex được đề cập trong câu trả lời khác khớp với phần người dùng của địa chỉ email ( đăng nhập người dùng @ example.org). Dưới đây là một số thông tin bổ sung.

Để sử dụng địa chỉ email đầy đủ làm tên người dùng, hãy sử dụng regex sau (ví dụ: trong /etc/postfix/login_map):

/^(.*)$/   ${1}

Điều này có nghĩa là tên người dùng của bạn luôn là địa chỉ email đầy đủ của bạn ( log-in-user@example.org ) - không có tên người dùng hiện tại nào được phép gửi từ địa chỉ đó - và bạn không phải cập nhật tệp cấu hình Postfix bổ sung mỗi khi bạn thêm một người dùng.

Điều này có thể được sử dụng trên một máy chủ có nhiều tên miền được cấu hình. Người dùng john.doe@example.com chỉ được phép gửi từ địa chỉ đó chứ không được gửi từ john.doe@example.org (người dùng và email khác nhau, người khác). Tên người dùng john.doe sẽ mơ hồ trong trường hợp này.

Ngoài ra, tùy thuộc vào cấu hình của bạn, cài đặt smtpd_sender_login_maps, phải trỏ đến tệp này, có thể nằm trong master.cf (thay vì main.cf). Tài liệu chính thức của Dovecot có ví dụ sau (nếu bạn đang sử dụng SASL / lần gửi):

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

Trong ví dụ này, cài đặt phải được điều chỉnh để trỏ đến đúng tệp và sử dụng regex hoặc (tốt hơn) pcre làm loại. Đặc biệt nếu một tệp có tên "ảo" đã được sử dụng cho mục đích khác (ví dụ: virtual_alias_maps, như trong ví dụ Postfix chính thức ), một tệp khác nên được sử dụng cho ánh xạ đăng nhập.

Từ:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

Đến:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map

0

Bạn có thể sử dụng kết hợp regrec trên tiêu đề như được hiển thị ở đây: http://www.akadia.com/service/postfix_uce.html không? Sau đó, bạn có thể kết hợp với regrec như [*@example.org] để đảm bảo chỉ người gửi từ example.org.


Giả sử, tôi có thể sử dụng "regrec:" tại đây (?)
Chris Lercher

@sonstabo sẽ thật tuyệt nếu bạn bao gồm mẫu cấu hình
Jaime Hablutzel
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.