Tôi đã thử trả lời r mà giải quyết vấn đề này rất. Nhưng các tin nhắn dường như không thể sửa đổi dễ dàng trong phiên bản tôi có (2.11.0).
Chẳng hạn, không có / var / spool / mqueue dir, nhưng, thay vào đó, / var / spool / postfix / ...
Tôi muốn làm rõ hai điều.
- Đầu tiên, câu trả lời đó đã được áp dụng cho sendmail KHÔNG postfix.
- Thứ hai, các tệp hàng đợi thao tác trực tiếp thô không được hỗ trợ.
Vì vậy, bạn có một số tùy chọn ở đây
1. tham số smtp_generic_maps
Câu trả lời này lấy cảm hứng từ câu trả lời tuyệt vời này . Nó sẽ tự động viết lại địa chỉ cũ thành địa chỉ mới. Bạn có thể xác định tệp để ánh xạ địa chỉ cũ sang địa chỉ mới.
/etc/postfix/main.cf:
smtp_generic_maps = hash:/etc/postfix/generic
/etc/postfix/generic:
account@localdomain.example.com account@example.com
Đừng quên postmap /etc/postfix/generic
và chạypostfix reload
- Ưu điểm: Bạn không cần phải yêu cầu tin nhắn
- Nhược điểm: Postfix sẽ viết lại địa chỉ người gửi và người nhận phù hợp
account@localdomain.example.com
.
2. sender_canonical_address
Để khắc phục nhược điểm của tùy chọn đầu tiên, bạn có thể sử dụng sender_canonical_maps
. Giải pháp này dựa trên đề xuất của tác giả Postfix . Tương tự như tùy chọn đầu tiên, bạn có thể xác định tệp để ánh xạ địa chỉ cũ sang địa chỉ mới.
/etc/postfix/main.cf:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
/etc/postfix/sender_canonical:
account@localdomain.example.com account@example.com
Chạy postmap /etc/postfix/sender_canonical
rồi chạy postfix reload
. Do dòng chảy của hàng đợi hậu tố, bạn phải xếp hàng lại hàng đợi bị ảnh hưởng bằng lệnhpostsuper -r queueid
- Ưu điểm: Postfix không viết lại địa chỉ người nhận.
- Nhược điểm: Bạn phải yêu cầu tất cả các tin nhắn bị ảnh hưởng. Nhưng bạn có thể yêu cầu tất cả hoãn lại bằng một lệnh duy nhất
postsuper -r ALL deferred
3. thao tác trực tiếp của hàng đợi postfix
Đây là cách cũ thủ công để sửa đổi hàng đợi để xử lý nâng cao. Câu trả lời này đến từ danh sách gửi thư của người dùng postfix
Nói ngắn gọn
Trích xuất hàng đợi
# postsuper -h queueid
# postcat -qbh queueid > tempfile.eml
# vi tempfile.eml
Gửi lại hàng đợi và xóa hàng đợi cũ
# sendmail -f $sender $recipient < tempfile.eml
# postsuper -d queueid
Để biết tài liệu về lệnh trên, hãy tham khảo trang này
Lưu ý:
Giải pháp ban đầu từ danh sách gửi thư của người dùng postfix , sử dụng postcat -q queueid >tempfile
để trích xuất hàng đợi. Lệnh này sẽ trích xuất tiêu đề, nội dung và thông tin meta của hàng đợi. Như Azendale đã chỉ ra dưới đây , sendmail
sẽ từ chối gửi email không đúng định dạng này vì thông tin meta.
Sử dụng -bh
tham số ngoài q
tham số sẽ làm cho bộ lọc postcat chỉ xuất ra tiêu đề và phần thân, không bao gồm thông tin meta. Một lợi ích phụ của việc này là tempfile có định dạng mà hầu hết các ứng dụng email nhận ra là định dạng .eml, cho phép bạn xem thông báo kết quả (đã chỉnh sửa).
postcat -qbh queueid >tempfile
. (Lợi ích phụ: nó ở định dạng .eml.) Nếu tôi chỉ sử dụng-q
thì dường như không làm gì khi tôi chạy sendmail. Phiên bản hậu tố 2.8.4. bất cứ ai có thể xác nhận điều này? Nếu vậy, hãy chỉnh sửa câu trả lời này.