Exim: Thay đổi địa chỉ người gửi khi gửi thư ra khỏi mạng cục bộ


8

Chúng tôi có một thiết lập exim hoạt động tại một trang web, nơi người dùng có thể gửi và nhận thư. Chúng tôi đang cố gắng thiết lập một máy chủ để gửi một số cảnh báo và lỗi sử dụng email đến một địa chỉ nằm ngoài mạng cục bộ.

Vấn đề là:

Chương trình gửi thư gửi cho họ bằng tên người dùng mà nó chạy bên dưới và tên máy chủ cục bộ của máy chủ. Điều này khiến các thư có người gửi định dạng: myapp@myserver.mydomain. Exim gửi các thư này đến máy chủ SMTP của ISP, từ chối các thư này vì chúng có người gửi bất hợp pháp hoặc không thể xác minh (địa chỉ nội bộ).

Tôi nghĩ tôi nên cấu hình exim để viết lại người gửi khi:

  • tên miền của người gửi nằm trên mạng cục bộ
  • tên miền của người nhận nằm ngoài mạng cục bộ

Tôi đã thử thiết lập một số loại viết lại trong cấu hình exim, nhưng không quản lý để làm cho nó hoạt động. Tôi đã cho thấy những gì tôi đã thử, nhưng tôi đã hết thời gian trong lần truy cập cuối cùng vào trang web và phải quay lại phiên bản gốc mất tất cả những thay đổi tôi đã thử.

Câu trả lời:


9
begin rewrite
myapp@myserver.mydomain   legal.user@myserver.mydomain   SFfrs

Các cờ có ý nghĩa như sau:

  1. S - Thực hiện tất cả việc viết lại tại thời điểm SMTP. Điều này có nghĩa là tất cả các cờ sau đây được thực hiện ngay lập tức khi dữ liệu họ áp dụng được gửi đến, không bị trì hoãn cho đến sau này.
  2. F - Viết lại phong bì từ trường.
  3. f - Viết lại trường From :.
  4. r - Viết lại trường tiêu đề Trả lời:
  5. s - Viết lại trường tiêu đề Người gửi-Đến :.

Đọc Chương 31 của Đặc tả Exim để biết thêm chi tiết về cách viết lại tin nhắn


1
Đây là cách tôi làm cho nó hoạt động, ngoại trừ: Phải có một ^sự khởi đầu của quy tắc, vì chấp nhận Smột biểu thức chính quy
Esa Varemo

1
s nên là " Sender:" tiêu đề không " Sender-To:" (Và đó là một thay đổi quá nhỏ để chỉnh sửa bài đăng)
Gert van den Berg

11

Các tập tin /etc/email-addressesnên xử lý vấn đề. Đây là một phần tiêu chuẩn của phân phối Exim. Bạn sẽ cần phải định cấu hình một bản ghi cho mỗi người dùng gửi email cục bộ.

Hãy thử một dòng để /etc/email-addressesthích:

 myapp:   donotreply@example.com

Trên máy chủ MX của bạn thêm một bí danh như:

 donotreply:    :blackhole:

Sử dụng một Reply-to:tiêu đề để cho phép người nhận trả lời tin nhắn.

Các tập tin /etc/email-addressesđược sử dụng mã viết lại sau đây, nên ở đầu rewritephần của tập tin cấu hình.

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs

/etc/email-addresseskhông tồn tại trên máy chủ của tôi. Tôi chỉ có thể tạo ra nó, hoặc điều đó chỉ ra rằng thiếu một cái gì đó?
Esa Varemo

@EsaVaremo Làm mờ tệp cấu hình của bạn email-addresseshoặc kiểm tra tệp cấu hình của bạn để biết phần viết lại. Có thể điều này không được cấu hình trong bản phân phối của bạn.
BillThor

Tôi đã cố gắng grep, locatevà đã tìm kiếm một vài man-pages, nhưng không tìm thấy bất cứ điều gì. Các tập tin nên được xác định trong exim.conf?
Esa Varemo

@EsaVaremo Dòng ở cuối phản hồi của tôi phải nằm trong phần viết lại của exim.conf. Nếu nó bị thiếu hãy thêm nó. Hãy chắc chắn rằng biến local_domainsbao gồm tên miền của bạn.
BillThor

Tôi nhận thấy chỉnh sửa của bạn một lúc sau khi tôi đã bình luận cuối cùng của tôi. Vì bất cứ lý do gì tôi đã không làm cho điều đó hoạt động, vì vậy tôi đã đi với câu trả lời khác, vì tôi sắp hết thời gian. Tôi không nghi ngờ rằng điều này là đúng, tôi có thể đã nhầm lẫn / cấu hình một cái gì đó ...
Esa Varemo

1

/etc/email-addressesrất tiện lợi khi bạn chỉ cần liên kết một địa chỉ email cho mỗi tên người dùng. Tuy nhiên, nếu người dùng của bạn cần gửi email có nhiều địa chỉ, bạn sẽ phải sửa đổi /etc/email-addressesmỗi lần và chắc chắn bạn sẽ sử dụng sai địa chỉ.

Một cách tiếp cận khác là gửi email bằng exim4lệnh và -ftùy chọn của nó :

$ cat email|/usr/sbin/exim4 -f myapp@example.com recipient@example.com

Lưu ý rằng để -ftùy chọn hoạt động, bạn cần người dùng của bạn phải là người dùng đáng tin cậy của exim hoặc exim để chấp nhận anh ta như một người gửi không đáng tin cậy được phép.

Trong trường hợp của tôi, cái sau được mặc định, nhờ ký tự đại diện này trong /etc/exim4/conf.d/main/02_exim4-config_options :

untrusted_set_sender = *

Giải pháp khác là thêm dòng sau vào /etc/exim4/conf.d/main/00_local_settings(giả sử cấu hình phân tách của exim và tạo nó nếu nó chưa tồn tại):

MAIN_TRUSTED_USERS = yourusername

Cả hai tùy chọn đều cần tải lại cấu hình của exim. Trong Debian:

# dpkg-reconfigure exim4-config
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.