2009-04-16 40 views
5

Tôi có một máy chủ email postfix và có một vấn đề tôi muốn gỡ lỗi. Làm cách nào tôi có thể định cấu hình để gửi bản sao của mỗi email tới email của tôi (ngoài việc gửi email tới người nhận dự định của nó).postfix: gửi một bản sao của mỗi email đến một địa chỉ email nhất định

+0

http://serverfault.com/questions/407302/how-can-i-configure-postfix-to-retain-copies-of-all-email-sent-through-it có nhiều câu trả lời hay hơn vì nó sử dụng các tính năng được cung cấp bởi postfix. –

Trả lời

8

Gần đây tôi đã làm việc này, vì vậy mặc dù tôi muốn chia sẻ:

Gửi tất cả thư đi vào các thư mục Sent với postfix và cyrus imap.

Tóm tắt

Make postfix gửi bcc bản sao của tất cả các email gửi đi đến một đặc biệt "gửi" tài khoản mail. Sử dụng sàng trên tài khoản đặc biệt này để chuyển hướng tất cả các email vào thư mục Đã gửi được liên kết với tài khoản.

  1. Tạo tài khoản người dùng email để gửi

    Cách dễ nhất để làm điều này là để tạo ra một tài khoản unix mới cho gửi, thiết vỏ để/bin/false để ngăn chặn bất cứ ai từ việc có thể để đăng nhập trong:

    host$ sudo useradd sent 
    host$ sudo chsh -s /bin/false sent 
    
  2. Thiết lập imap cho người sử dụng gửi

    sử dụng cyradm chúng ta tạo ra một ne w hòm thư (tức là người dùng) và cung cấp cho người dùng thêm quyền truy cập vào tất cả các imap của chúng tôi "Sent" thư mục:

    host$ $ cyradm -user cyrus localhost 
    Password: <enter you cyrus user admin password here> 
    localhost> createmailbox user.sent 
    localhost> setaclmailbox user.%.Sent sent append 
    Setting ACL on user.userx.Sent...OK. 
    Setting ACL on user.usery.Sent...OK. 
    . . . 
    Setting ACL on user.userz.Sent...OK. 
    localhost> exit 
    
  3. Tạo một kịch bản sàng cho tài khoản gửi

    Kịch bản này sẽ chuyển hướng tất cả các email gửi đến vào tài khoản đã gửi, đến thư mục được gửi trong Hộp thư đến của người gửi.

    kịch bản của tôi được gọi sent.sieve và trông giống như sau:

    # Sieve script for sent. If outgoing email is bcc'ed to this account, 
    # this sieve script will redirect it to the sender's Sent folder 
    require ["fileinto"]; 
    
    if address :is :localpart "From" "userx" { 
        fileinto "user.userx.Sent"; 
    } 
    elsif address :is :localpart "From" "usery" { 
        fileinto "user.usery.Sent"; 
    } 
    elsif address :is :localpart "From" "userz" { 
        fileinto "user.userz.Sent"; 
    } 
    

    Bạn sẽ cần phải đặt trong một entry cho mỗi người dùng của bạn (userx, usery, userz trong ví dụ trên). Tôi đã không thể tìm cách tốt hơn để thực hiện việc này. Gợi ý được hoan nghênh để [email protected]

    Install script sàng như thế này:

    host$ sieveshell localhost -user=sent -a=cyrus 
    Password: <enter you cyrus user admin password here> 
    > put sent.sieve 
    > activate sent.sieve 
    > quit 
    
  4. Thiết lập các bản đồ bcc cho postfix

    Trong thư mục postfix (/ etc/postfix trên debian) tạo một tệp có tên là bcc_map trông giống như sau:

    # copy all locally sent mail to the sent account 
    @yourdomain.com  [email protected] 
    

    Biên dịch thành mã băm sau tệp sử dụng:

    host$ sudo postmap bcc_map 
    

    Thêm dòng sau vào mã bưu chính.tập tin cấu hình cf:

    sender_bcc_maps = hash:/etc/postfix/bcc_map 
    

    Và chắc postfix reload cấu hình của nó:

    chủ $ sudo /etc/init.d/postfix reload

  5. thử nghiệm và Debug

    Gửi một email và kiểm tra xem nó có được sao chép vào thư mục Đã gửi của bạn hay không.

    Trong trường hợp có sự cố, bạn nên kiểm tra nhật ký cyrus và postfix (tất cả đã đăng nhập vào /var/log/syslog trên máy chủ debian của tôi). Quyền sở hữu và không chính xác quyền truy cập thường sẽ dẫn đến một số đầu mối được gửi tới các nhật ký .

2

Chỉ cần thêm [email protected] vào /etc/postfix/main.cf và khởi động lại máy chủ postfix. Tôi đã thêm dòng này ở phía dưới.

Nó thực sự có vẻ đang hoạt động. Thông tin thêm về always_bcc here

Xin đừng quên sao lưu tệp này trước.

Các vấn đề liên quan