Trên thực tế, câu trả lời của Instyle rất khó thực hiện nếu bạn muốn hỗ trợ nhiều tên miền khác nhau và nó sai vì:
a) Với ví dụ của anh ấy transport_maps
, tất cả các email được gửi đến tên miền đó được gửi đến dịch vụ cụ thể đó mà không liên quan đến việc email có bị trả lại email hay không. Vì nó sử dụng một tên miền cụ thể, nên nó thực sự chỉ bị trả về email ... nhưng nó không thể được đảm bảo theo cách đó.
b) Dữ liệu được gửi đến tập lệnh của bạn là chính email chứ không phải thư bị trả lại. Nói cách khác, mã của bạn có thể không biết tại sao email bị trả lại (tức là thư bị trả lại cục bộ sẽ chỉ gửi cho bạn email gốc.)
Cách chính xác để thực hiện thiết lập đó trong postfix là sử dụng lớp thông báo thoát.
1) Trong /etc/postfix/main.cf
notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps
2) Trong / etc / postfix / Transport_maps
# when you make changes to this file, run:
# sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:
Như bạn có thể thấy, bây giờ chúng tôi sẽ cho postfix sử dụng bounces@example.com
bất cứ khi nào email bị trả về. Sau đó, trong bản đồ vận chuyển, sử dụng bulkbounce
làm dịch vụ để xử lý bất kỳ địa chỉ email nào bounces@example.com
.
Cuối cùng, bạn có thể xác định bulkbounce
với tập lệnh của mình:
3) Trong /etc/postfix/master.cf
bulkbounce unix - n n - - pipe
flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}
Kịch bản này yêu cầu bạn phải có người dùng. nobody
cũng là một lựa chọn tốt Nếu bạn muốn có một người dùng cụ thể, bạn có thể tạo nó với:
useradd bounce
Không có tập lệnh trong master.cf
, các email sẽ được gửi đến tài khoản số lượng lớn. Vì vậy, nếu bạn có một tập lệnh phân tích email từ các tệp, điều này sẽ hoạt động mà không cần transport_maps
và master.cf
thay đổi.
Từ một bình luận dưới đây:
FYI - tái: trả lại gấp đôi ...
nếu bạn đang sửa đổi các địa chỉ trả lại (địa chỉ VERP như user+id@fromdomain.com
, sau đó bạn sẽ muốn xóa bỏ dòng trong main.cf
cho bounce_notice_recipient
, nếu bạn đang quan tâm đến việc phân tích các +id
thư bị trả lại chỉ trong kịch bản của bạn.
Message-Id
tiêu đề của mình, thì nó phải được gửi lại và điều đó sẽ được gửi lại đủ để kiểm tra xem ai là ai