Làm cách nào để thiết lập postfix để lưu trữ e-mail trong một tệp thay vì chuyển tiếp nó?


9

Tôi muốn chạy một bản sao của một máy chủ sản xuất trên môi trường cục bộ. Hệ thống chạy một ứng dụng PHP, sẽ gửi e-mail cho khách hàng trong các tình huống khác nhau và tôi muốn đảm bảo không có e-mail nào được gửi từ môi trường dàn dựng.

Tôi có thể điều chỉnh mã để nó sử dụng một người gửi e-mail giả, nhưng tôi muốn chạy mã chính xác như môi trường sản xuất. Tôi có thể sử dụng một MTA khác (Postfix chỉ là những gì chúng tôi sử dụng trong sản xuất), nhưng tôi muốn thứ gì đó dễ cài đặt trong Debian / Ubuntu :)

Vì vậy, tôi muốn thiết lập cài đặt Postfix cục bộ để lưu trữ tất cả e-mail trong (một hoặc nhiều) tệp thay vì chuyển tiếp nó. Trên thực tế, tôi không thực sự quan tâm đến việc nó được lưu trữ như thế nào miễn là khả thi để kiểm tra e-mail được gửi. Ngay cả một tùy chọn thiết lập cho biết hậu tố để giữ e-mail trong hàng đợi thư sẽ hoạt động (tôi có thể lọc hàng đợi khi tôi tải lại máy chủ dàn với một bản sao từ sản xuất).

Tôi biết điều này là có thể, tôi chỉ không tìm thấy bất kỳ giải pháp tốt nào trên mạng cho những gì có vẻ như là một nhu cầu khá phổ biến.

Cảm ơn!

Câu trả lời:


12

Tôi đã tạo một phương tiện giao thông mới với lệnh ống ghi e-mail xuống một tệp.

Về cơ bản:

  1. Tạo người dùng sẽ sở hữu e-mail (hoặc sử dụng email hiện có). Tôi gọi cho tôiemail
  2. mkdir /home/email/bin
  3. Đặt đoạn script sau vào /home/email/bin/mail_eater(cái này sử dụng PHP, nhưng bạn có thể viết phiên bản của riêng bạn bằng bất kỳ ngôn ngữ nào bạn thích, nó chỉ nối thêm stdin vào một tệp):

    #!/usr/bin/php
    <?php
    $fd = fopen("php://stdin", "r");
    $email = "";
    while (!feof($fd)) {
        $email .= fread($fd, 1024);
    }
    fclose($fd);
    $fh = fopen('/home/email/email.txt','a');
    fwrite($fh, $email."\n-------------------------------------------------------\n\n");
    fclose($fh);
    
  4. chmod a+x /home/email/bin/mail_eater
  5. touch /home/email/email.txt
  6. chmod a+r /home/email/email.txt
  7. Tạo một phương tiện giao thông mới bằng cách sử dụng tệp này bằng cách nối thêm dòng sau vào master.cf:

    file_route unix -    n    n    -    -    pipe user=email  argv=/home/email/bin/mail_eater
    
  8. Sử dụng này làm vận chuyển mặc định trong main.cf:

    default_transport = file_route
    

Có :)


3

Bạn có thể đặt những lĩnh vực vào $mydestinationtrong main.cf, vì vậy postfix sẽ mang nó tại địa phương.

Bạn có thể thiết lập những người dùng cục bộ khác nhau nếu bạn muốn hoặc bạn có thể thiết lập một địa chỉ bắt tất cả cục bộ để gửi email vào chỉ một tài khoản, chi tiết tại đây: http://www.postfix.org/ADDRESS_REWRITING_README.html#luser_relay

Đối với tất cả các tên miền:

mydestination = pcre:/etc/postfix/mydestinations

/etc/postfix/mydestinationsnên chứa

/.*/    ACCEPT

Tôi không thể kiểm tra ngay bây giờ nhưng nó sẽ hoạt động.


Tôi không biết tên miền đích trông như thế nào (chúng đến từ cơ sở dữ liệu khách hàng thực sự). Tôi sẽ kiểm tra các liên kết mặc dù.
GomoX

Cảm ơn đã cập nhật, tôi đã đăng giải pháp của riêng mình cho vấn đề này vì nó có vẻ "sạch" hơn nhưng có vẻ như nó cũng hoạt động tốt.
GomoX

Để làm việc như dự định, điều này cũng đòi hỏi phải thiết lập local_recipient_maps = . Nó được mô tả trong liên kết bạn cung cấp, nhưng tôi nghĩ nó cũng nên được đề cập trong câu trả lời.
jojman

2

thử (trong main.cf):

defer_transports = smtp

sau đó bạn có thể xem hàng đợi postqueue -pvà xem nội dung vớipostcat


0

Tùy thuộc vào phân phối của bạn, bạn có thể xem "nullmailer". Đây là một MTA chuyển tiếp, chuyển tiếp đến một SMTP khác trên mạng hoặc từ xa của bạn. Đây rất có thể là một SMTP không hợp lệ và trong trường hợp đó có lẽ nó sẽ chỉ đưa nó vào hàng đợi trên một thư mục trên máy.

Trên debian và ubfox, nó có sẵn như là một MTA thay thế cho hệ thống của bạn.


0

Điều này được sao chép và sửa đổi một chút từ blog của tôi http://blog.malowa.de/2011/04/postfix-as-spam-trap-server.html :

Bạn thậm chí không phải cấu hình Postfix để hoạt động như một nullmailer. Postfix tàu với một công cụ gọn gàng được gọi là smtp-sinklừa. smtp-chìm chủ yếu nhằm hoạt động như một công cụ kiểm tra cho các máy khách SMTP cần có Máy chủ để chơi. Vì vậy, bạn có thể định cấu hình nó để ghi nhật ký toàn bộ cuộc hội thoại hoặc thậm chí kết xuất từng thư nhận được vào một tệp. Cái sau là cần thiết cho một nullmailer.

Không có tập tin cấu hình để cấu hình smtp-chìm. Tất cả mọi thứ được thực hiện thông qua các tùy chọn dòng lệnh.

smtp-sink -c -d "%Y%m%d%H/%M." -f . -u postfix -R /tmp/ -B "550 5.3.0 The recipient does not like your mail. Don't try again." -h spamtrap.example.com 25 1024

Chúng ta hãy xem xét kỹ hơn từng thông số.

-u postfix
Runs the program under the user "postfix"
-R /tmp/
Sets the output directory to /tmp/. In this directory the mails will be stored. If you have a high spam volume (hundreds of Spam per minute) it is recommended to write the mails to a ramdisk
-d "%Y%m%d%H/%M."
Writes the mail to a directory of the format "YearMonthDayHour" and in this directory the files are name "Month.RandomID". Note that the dates are in UTC
-c
Write statistics about connection counts and message counts to stdout while running
-f .
Reject the mail after END-OF-DATA. But the mail will be saved. Cool, isn't it?!
-B "550 5.3.0 The recipient does not like your mail. Don't try again"
This is the rejection message after END-OF-DATA.
-h spamtrap.example.com
Announce the hostname spamtrap.example.com
25
The port to listen on. Can be prepended with an IP or host if you want to bind on a special interface.
1024
The backlog count of connections that can wait in the TCP/IP stack before they get a free slot for sending mail.

Bạn có thể tìm thêm thông tin trong trang man của smtp-chìm, nhưng đây là những thứ quan trọng để chạy một spamtrap bắt tất cả. Trong cấu hình này, chương trình chấp nhận mọi thư với mọi kích cỡ từ bất kỳ người gửi nào đến bất kỳ người nhận nào có IPv4 và IPv6. Các hạn chế duy nhất là chỉ có 256 kết nối đồng thời có thể với 1024 kết nối được xếp hàng và chương trình được gắn cờ thử nghiệm. Vì vậy, không sử dụng smtp-chìm trong môi trường sản xuất.

Tùy chọn -B chỉ hợp lệ trong các phiên bản mới hơn của Postfix. Trong 2.7.1 nó bị thiếu. Trong 2.8.2 nó có mặt. Một nơi nào đó ở giữa nó đã được giới thiệu.

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.