Postfix trên máy chủ phát triển, cho phép thư được gửi đến chỉ một tên miền


11

Chúng tôi có postfix trên máy chủ phát triển của chúng tôi và tôi muốn nó chỉ có thể gửi thư đến tên miền của chúng tôi chứ không phải cho các tên miền khác, ngăn người dùng bên ngoài vô tình nhận thư từ máy chủ phát triển của chúng tôi.

Tôi đã tìm kiếm thông qua các tài liệu, đã thử một vài thứ nhưng nó vẫn gửi đến tất cả các tên miền ...

Câu trả lời:


7

bản đồ vận chuyển (5) được sử dụng để xác định lại cách email được định tuyến theo postfix.

  • Thêm dòng sau vào /etc/postfix/main.cf:

    transport_maps = hash:/etc/postfix/transport
    
  • Thêm tệp mới / etc / postfix / Transport với nội dung này:

    .example.com   :
    example.com    :
    *              discard:
    

Thay thế example.combằng tên miền mà máy chủ thư của bạn vẫn sẽ gửi thư đến. Nếu bạn không quan tâm đến tên miền phụ thì hãy xóa dòng đầu tiên.

Đừng quên băm tập tin sau khi chỉnh sửa nó bằng postmap (1) và tải lại postfix để những thay đổi có thể có hiệu lực:

# postmap /etc/postfix/transport && postfix reload

7

Bạn có thể dễ dàng hạn chế người nhận với smtpd_recipient_restrictions tiêu chuẩn hoặc chính xác hơn là check_recipient_access .

Chỉ cần tạo một truy cập (5) bảng /etc/postfix/accessvới nội dung như sau ( example.com là tên miền mà bạn muốn cho phép gửi thư đến):

example.com    OK

Bạn cũng có thể chỉ cho phép một số địa chỉ cụ thể:

user1@example.com    OK
user2@example.com    OK

Đừng quên băm tập tin sau khi chỉnh sửa nó bằng postmap (1) :

# postmap /etc/postfix/access

Bây giờ đặt các hạn chế người nhận sau trong main.cf của bạn:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

và tải lại Postfix:

postfix reload

Sau đó, kiểm tra nó nếu nó hoạt động .


1
Điều đó sẽ làm việc cho thư được gửi qua SMTP, không phải qua lệnh / usr / lib / sendmail và các quy trình cục bộ có thể thực hiện cả hai. Có vẻ như cài đặt 'ủy quyền_ubmit_users' có thể được sử dụng để chặn gửi cục bộ bằng sendmail / postdrop, sau đó các hạn chế smtpd sẽ là đủ.
Jacek Konieczny

6

Vì vậy, nếu ai đó vấp phải điều này giống như tôi đã làm: câu trả lời thực sự là header_checks và nó hoạt động như vậy:

  • Thêm dòng sau vào /etc/postfix/main.cf:

    header_checks = regexp:/etc/postfix/header_checks
    
  • Thêm tệp mới /etc/postfix/header_checksvới nội dung này:

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT redirect@example.com
    

Thay thế allowed-domain.combằng tên miền mà máy chủ thư của bạn vẫn sẽ gửi thư đến. Thay thế redirect@example.combằng địa chỉ email, tất cả các email khác sẽ được chuyển hướng đến.

Nếu bạn cần cho phép nhiều tên miền, dòng đầu tiên sẽ trông như thế này:

/^To:.*@(allowed-domain.com|another-domain.com)/  DUNNO

Thay vì chuyển hướng bạn có thể đơn giản thả tất cả các thư khác. Thay thế dòng thứ hai ở trên bằng:

/^To:.*@/   DISCARD No outgoing mails allowed

Giải trình:

  • Postfix đi qua từng tiêu đề thư một.
  • Mỗi dòng tiêu đề được khớp với từng header_checksdòng tệp.
  • Nếu nó khớp với dòng đầu tiên ( To:chứa miền được phép), nó sẽ bỏ qua dòng tiêu đề tiếp theo và bắt đầu kiểm tra lại tiêu đề từ đầu. Vì không có dòng nào khác phù hợp, điều này có nghĩa là thư sẽ được gửi.
  • Nếu nó khớp với dòng thứ hai ( To:chứa một địa chỉ email bên ngoài khác), nó sẽ chuyển hướng thư.

vấn đề này dường như đã được giải quyết với câu trả lời này, có lẽ nó nên được đánh dấu là đã giải quyết? (nó hoạt động như một cơ duyên đối với tôi ít nhất)
Sverre

những gì về Cc:Bcc:?
Paul Tobias

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.