postfix - làm thế nào để bạn chuyển hướng tất cả các email đến một người dùng, ví dụ *@example.com → user@example.com


27

Tôi đang sử dụng postfix cho email của mình. Tôi biết tôi có thể sử dụng lệnh / etc / aliases và newaliases để chuyển hướng một số email nhất định, ví dụ: tôi có thể chuyển hướng root@example.com đến user@example.com bằng cách đặt root: user/ etc / bí danh của mình và sau đó chạy newaliases. Tuy nhiên, tôi muốn làm điều tương đương *: user, để tất cả email đến example.com sẽ được gửi đến user@example.com.

Làm thế nào để tôi làm điều này?

Câu trả lời:


19

luser_relay = user@example.comtrong bạn main.cflà những gì bạn muốn.

Để vô hiệu hóa người dùng kiểm tra và chấp nhận tất cả thư, bạn cần thêm local_recipient_maps =tùy chọn. Tài liệu


1
Tôi đã thêm nó vào main.cf và khởi động lại postfix. Tôi đã gặp lỗi sau trong /var/log/main.info: <pre> 550 5.1.1 <myrandom@example.org>: Địa chỉ người nhận bị từ chối: Người dùng không xác định trong bảng người nhận cục bộ; từ = <me @ gmail> đến = <myrandom@example.org> </ pre>
Rory

Vì vậy example.org không có trong danh sách tên miền người nhận cục bộ của bạn hoặc một cái gì đó khác đã được định cấu hình sai.
womble

7
Tôi đã làm cho nó hoạt động. Cũng như tùy chọn luser_relay mà bạn đã đề cập, bạn cũng cần thêm tùy chọn "local_recipient_maps =". Trang tài liệu postfix này giải thích rằng: postfix.org/postconf.5.html#luser_relay
Rory

Liệu phương pháp này bảo tồn địa chỉ email? (các bản đồ ảo viết lại nó và địa chỉ gốc: bị mất.)
user14645

1
Câu hỏi @Sverre là dành cho câu hỏi, không phải nhận xét về câu trả lời bảy năm tuổi cho câu hỏi liên quan đến tiếp tuyến.
womble

17

Những gì bạn đang tìm kiếm là một bảng bí danh ảo và có thể được thực hiện bằng cách sử dụng ...

Trước tiên, bạn cần chỉnh sửa hoặc tạo nếu nó chưa tồn tại, tệp / etc / postfix / virtual .

example.com   whatever
@example.com  user@example.com

Sau khi điều này đã được lưu, bạn sẽ cần phải chạy postmap /etc/postfix/virtualđể tạo ra /etc/postfix/virtual.db Postfix sẽ được đọc.

Sau đó, bạn sẽ cần chỉnh sửa /etc/postfix/main.cf và chắc chắn rằng bạn không có dòng nào sau đây:

virtual_alias_maps = hash:/etc/postfix/virtual

Điều này thực sự sẽ cho postfix biết về bảng bí danh ảo và sử dụng nó.

Vấn đề với việc sử dụng luser_relaytùy chọn như những người khác đã đề cập là điều này được coi là người sử dụng các biện pháp cuối cùng cho các địa chỉ không xác định của đại lý giao hàng địa phương. Nếu postfix chỉ xử lý thư cho một tên miền thì điều này có thể được sử dụng cho việc này nhưng nó có thể che giấu các lỗi cấu hình khác và có thể sẽ gây ra kết quả không mong muốn nếu có nhiều tên miền được xử lý.

Một lưu ý mà tôi cảm thấy bắt buộc phải đề cập là bằng cách tạo bí danh ký tự đại diện có tính chất này, bạn đang mở hệ thống thư của mình để chấp nhận thư cho các địa chỉ không tồn tại và có nguy cơ bị hộp thư chứa đầy thư rác vì không tồn tại hộp thư.


8

Nó thực sự khá đơn giản. Tất cả bạn cần làm là để một cái gì đó như thế này trong main.cftập tin của bạn :

virtual_alias_maps = regexp:/etc/postfix/virtual_alias

Phần regexplàm thủ thuật. Ngoài ra, trong /etc/postfix/virtual_aliasbạn đặt một cái gì đó như thế này:

/^test/ you@yourdomain.com

Trong ví dụ này, bạn sẽ nhận được tất cả thư có đích bắt đầu bằng 'test'. Đừng quên postmap / etc / postfix / virtual_alias và tải lại postfix.


6

Để kết hợp một câu trả lời / nhận xét ở trên phù hợp nhất với tôi (tôi có một tên miền chính):
Thêm phần sau vào /etc/postfix/main.cf:

luser_relay = user@domain.com (or local system user)
local_recipient_maps =

( local_recipient_maps =không có giá trị được đặt)

Tôi sử dụng tài khoản linux của người dùng cục bộ và cũng thêm cùng một người dùng vào / etc / bí danh để người dùng nhận được tất cả thư đến root, postmaster, v.v.

Bạn cũng có thể kết hợp cùng một địa chỉ này trong virtual_alias_mapsvà chỉ ra bất kỳ tên miền ảo nào tại cùng một tài khoản chính này.

Vui lòng tham khảo luser_relay để biết thêm.


3

Nếu bạn muốn sử dụng địa chỉ bắt tất cả cho tên miền mydomain, bạn có thể sử dụng /etc/aliaseskết hợp với biểu thức chính quy như sau:

trong /etc/postfix/main.cfadd
alias_maps = hash:/etc/aliases, regexp:/etc/postfix/catch-all-local.regexp

trong /etc/postfix/catch-all-local.regexpadd
!/^owner-/ your-catch-all-user

Cái này cần phải dùng mẹo. Nó hoạt động với tôi và hoạt động với virtual_alias_maps được đặt song song.


0

Có một loại bảng tra cứu tĩnh ít được biết đến trong Postfix, có thể được sử dụng cho chính xác mục đích này:

alias_database = static:user@example.com
alias_maps = static:user@example.com

Nếu user@example.com không phải là cục bộ cho hệ thống này, có lẽ bạn cũng muốn loại bỏ tất cả các thư bị trả lại bằng cách thay thế các dòng kết thúc bouncebằng discardin master.cfđể tránh các vòng lặp thư.


-4

Tôi ghét phải là một killjoy, nhưng vấn đề của bạn là bạn đang sử dụng Postfix. Postfix làm cho chính xác bài tập này rất khó khăn. Tôi biết: tôi đã phải làm điều đó một vài năm trước và phải mất nhiều ngày và ngày để làm cho đúng. Các lusertùy chọn là một trong những quyền, nhưng có những thứ khác để có được quyền, quá. (Và thậm chí tên của tùy chọn cho thấy các tác giả của Postfix không thực sự muốn hỗ trợ điều này.)

Tôi khuyên bạn nên chuyển sang Chuyển phát nhanh. Courier hỗ trợ phương pháp "bắt tất cả" này theo cách hợp lý hơn nhiều vì cách nó mở rộng hệ thống bí danh hiện có.


1
Postfix không gây khó khăn gì cả. Các bí danh ảo là cách tiêu chuẩn để thực hiện các trò chơi trong Postfix và chúng rất dễ dàng. Điều đó nói rằng, trên bất cứ thứ gì ngoại trừ một máy chủ mail đồ chơi cho tên miền cá nhân của riêng bạn, các cửa hàng lưu trữ là một ý tưởng rất tồi.
Rob Chanter
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.