Tôi đang cố gắng xây dựng một máy chủ Postfix/Cyrus nhỏ trên máy trạm Linux của mình để hoạt động như một proxy giữa ứng dụng e-mail của tôi (Thunderbird) và máy chủ thư của công ty tôi, đồng thời xử lý các e-mail hệ thống cục bộ (nội dung được gửi bởi crontabs cho ví dụ).
Trên máy chủ Cyrus, tôi đã tạo một hộp thư bắt chước địa chỉ e-mail của công ty tôi, các bí danh được định cấu hình trong /etc/bí danh
để gửi e-mail địa phương đến nguồn gốc
hoặc trưởng bưu điện
đến địa chỉ này, và nhờ vận chuyển_maps
chỉ thị, được ưu tiên hơn mọi thứ khác, đã hướng dẫn Postfix gửi e-mail đến địa chỉ e-mail này trực tiếp đến ổ cắm lmtp của Cyrus. Phần này hoạt động hoàn toàn tốt: tất cả thư cục bộ được gửi tới những người dùng có mặt trong /etc/bí danh
được gửi đến hộp thư Cyrus cục bộ của tôi, trong khi tất cả thư cho các miền khác (hoặc thậm chí miền của công ty tôi) sẽ chuyển đến máy chủ chuyển tiếp (máy chủ thư thực tế của công ty tôi), sau khi Từ:
tiêu đề được viết lại thành địa chỉ e-mail công ty thực tế của tôi nhờ smtp_generic_maps
(chỉ hoạt động trên thư gửi đi, không giống như sender_canonical_maps
hoặc người nhận_canonical_maps
). Điều này gần như hoàn hảo.
Vấn đề tôi đang gặp phải là Postfix chấp nhận tất cả thư dành cho người dùng cục bộ, thậm chí cả người dùng hệ thống và gửi thư đến các tệp mbox trong /var/spool/mail
, mà tôi không muốn.
tôi đã cố gắng thiết lập local_recipient_maps
chỉ $alias_maps
(không bao gồm proxy:unix:passwd.byname
được chứa trong giá trị mặc định), nhưng điều này không thay đổi bất cứ điều gì.
Tôi cũng đã cố gắng thiết lập hộp thư_transport
để gửi những e-mail đó tới ổ cắm lmtp của Cyrus, nhưng sau đó Postfix gửi tới Cyrus mọi thứ không được liệt kê trong $alias_maps
, nó có tồn tại trong cơ sở dữ liệu Unix passwd hay không (thiết lập mailbox_transport_maps = $alias_maps
không giúp được gì).
Với cài đặt này, gửi thư tới những người dùng không tồn tại (hoặc các tài khoản Unix hiện có không có bí danh trong $alias_maps
) cuối cùng bị Cyrus từ chối (với 550-Hộp thư không xác định
), nhưng tôi muốn những e-mail đó bị Postfix từ chối trực tiếp, tránh chuyến đi khứ hồi (IMHO) vô ích tới Cyrus.
Nếu những gì tôi đang cố gắng đạt được thực sự là không thể, tôi sẽ chấp nhận điều này.
Tôi cũng đã cố gắng thiết lập vận tải địa phương
đến ổ cắm lmtp của Cyrus, nhưng thậm chí còn tệ hơn: tất cả thư được gửi trực tiếp đến Cyrus mà không có bất kỳ bí danh nào (vì vậy tất cả thư cục bộ đều bị từ chối, ngay cả khi người dùng cục bộ có mặt trong $alias_maps
).
Tôi biết tôi có thể bỏ qua địa phương
hoàn toàn và xử lý tất cả thư với ảo
đại lý giao hàng (đó là điều tôi thường làm khi thiết lập một thực máy chủ thư, chỉ sử dụng tên miền/hộp thư ảo), nhưng tôi thích cấu hình rất đơn giản mà tôi đã hoàn thành cho đến nay (/etc/postfix/main.cf
hiện chỉ chứa 10 dòng thực tế hoặc hơn) và tôi thấy rất ngạc nhiên rằng địa phương
không thể được hướng dẫn bỏ qua cơ sở dữ liệu mật khẩu Unix và từ chối mọi thứ không thực sự được liệt kê trong $alias_maps
(trừ khi tôi hiểu sai tài liệu, đó là những gì local_recipient_maps
là cho).
Đây là cấu hình của tôi:
/etc/postfix/main.cf
mức độ tương thích = 2
myhostname = <FQDN của máy trạm của tôi trong lan>
inet_interfaces = chỉ lặp lại
mynetworks_style = máy chủ
relayhost = <MX nội bộ của công ty tôi>
alias_maps = hash:/etc/aliases (để loại trừ nis:mail.aliases)
transport_maps = hash:$config_directory/transport_maps
smtp_generic_maps = hash:$config_directory/smtp_generic_maps
biff = không
/etc/bí danh
quản lý bưu điện: root
root: <địa chỉ e-mail công ty thực tế của tôi>
/etc/postfix/transport_maps
<địa chỉ e-mail công ty thực tế của tôi> lmtp:unix:/run/cyrus/socket/lmtp
/etc/postfix/smtp_generic_maps
@<FQDN của máy trạm của tôi trong lan> <địa chỉ e-mail công ty thực tế của tôi>
Như bạn thấy, rất đơn giản.
Không có cách nào để hướng dẫn Postfix từ chối thư cho người dùng hệ thống hay chính xác hơn là từ chối thư cho người dùng không được liệt kê rõ ràng trong $alias_maps
?