2008-09-04 45 views
6

Tôi đang thiết lập máy chủ nằm trên mạng phía sau tường lửa và tôi muốn các chương trình trên máy tính này có thể sử dụng sendmail để gửi email đến bất kỳ địa chỉ email nào. Chúng tôi có một máy chủ SMTP chạy trên mạng này (chúng ta hãy gọi nó là mailrelay.example.com), đó là cách chúng tôi dự định nhận các email gửi đi thông qua tường lửa.Cấu hình sendmail sau tường lửa

Vậy làm cách nào để định cấu hình sendmail để gửi tất cả thư qua mailrelay.example.com? Googling vẫn chưa cho tôi câu trả lời, và chỉ tiết lộ rằng cấu hình sendmail cực kỳ phức tạp và khó chịu.

Trả lời

11

@eli: sửa đổi sendmail.cf trực tiếp thường không được khuyến nghị, vì nó được tạo bởi trình biên dịch macro.

Sửa /etc/mail/sendmail.mc để bao gồm các dòng:

define(`SMART_HOST',`mailrelay.example.com')dnl 

Sau khi thay đổi các tập tin cấu hình vĩ mô sendmail.mc, nó phải được biên dịch lại để sản xuất các tập tin cấu hình sendmail.

# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf 

Và khởi động lại dịch vụ sendmail (Linux):

# /etc/init.d/sendmail restart 

Cũng như thiết lập các máy chủ thông minh, bạn có thể muốn cũng vô hiệu hóa cấu hình độ phân giải tên và có thể chuyển sendmail của bạn để cổng không chuẩn, hoặc tắt chế độ daemon.

Disable Name Resolution

Servers đó nằm trong mạng lưới lửa tường hoặc sử dụng địa chỉ mạng Translation (NAT) có thể không có các dịch vụ DNS hoặc NIS sẵn.Điều này tạo ra một vấn đề đối với sendmail, vì nó sẽ sử dụng DNS mặc định, và nếu nó không phải là có sẵn, bạn sẽ thấy thông điệp như thế này trong mailq:

host map: lookup (mydomain.com): deferred) 

Trừ khi bạn đang chuẩn bị để thiết lập một DNS thích hợp hoặc NIS dịch vụ sendmail có thể sử dụng, trong trường hợp này, bạn thường sẽ định cấu hình độ phân giải tên là bằng cách sử dụng tệp/etc/hosts. Này được thực hiện bằng cách cho phép một 'service.switch' tập tin và xác định độ phân giải của file, như sau:

1: Bật service.switch cho sendmail Sửa /etc/mail/sendmail.mc để bao gồm các dòng:

define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl 

2: Cấu hình service.switch cho các tập tin Tạo hoặc sửa đổi /etc/mail/service.switch để chỉ chỉ vào/etc/hosts cho tên độ phân giải:

# cat /etc/mail/service.switch 
    hosts files 

3: Recompil e sendmail.mc và khởi động lại sendmail để cài đặt này có hiệu lực.

phím Shift sendmail để cổng không chuẩn, hoặc vô hiệu hóa chế độ daemon

Theo mặc định, sendmail sẽ lắng nghe trên cổng 25. Bạn có thể muốn thay đổi cổng này hoặc tắt chế độ daemon sendmail hoàn toàn vì nhiều lý do: - nếu có chính sách bảo mật cấm sử dụng các cổng nổi tiếng - nếu một sản phẩm/quy trình SMTP khác đang chạy trên cùng một máy chủ trên cổng tiêu chuẩn - nếu bạn không muốn chấp nhận thư qua smtp , chỉ cần gửi bằng cách sử dụng sendmail

1: Để thay đổi sendmail để sử dụng cổng không chuẩn. Sửa /etc/mail/sendmail.mc và sửa đổi các "Port" thiết lập trong dòng:

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') 

Ví dụ, để có được sendmail để sử dụng cổng 125:

DAEMON_OPTIONS(`Port=125,Addr=127.0.0.1, Name=MTA') 

Điều này đòi hỏi sendmail .mc được biên dịch lại và sendmail để được khởi động lại.

2: Ngoài ra, để tắt chế độ daemon sendmail hoàn toàn (Linux) Chỉnh sửa/etc/sysconfig/sendmail và sửa đổi các "DAEMON" thiết lập để:

DAEMON=no 

Sự thay đổi này sẽ đòi hỏi sendmail được khởi động lại.

+0

Cảm ơn! Mẹo đó về 'service.switch' đã giải quyết được vấn đề của tôi. –

5

http://www.elandsys.com/resources/sendmail/smarthost.html

Sendmail smarthost

Một máy chủ thông minh là một máy chủ thông qua đó thư gửi đi được chuyển tiếp. Một số ISP chặn lưu lượng SMTP gửi đi (cổng 25) và yêu cầu người dùng gửi tất cả thư qua máy chủ thư của ISP . Sendmail có thể được cấu hình để sử dụng máy chủ thư của ISP làm máy chủ thông minh .

Đọc bài viết được liên kết để biết cách thiết lập tính năng này.

3

@Espo: Cảm ơn lời khuyên tuyệt vời về nơi bắt đầu. Liên kết của bạn sẽ tốt hơn nếu tôi đã định cấu hình sendmail cho lần sử dụng đầu tiên thay vì sử dụng cấu hình hiện có và thực hiện thay đổi nhỏ này. Tuy nhiên, một khi tôi biết tìm nội dung trên "SmartHost", tôi đã tìm thấy một cách dễ dàng hơn.

Tất cả tôi phải làm là chỉnh sửa tập tin /etc/mail/sendmail.cf của tôi để thay đổi

DS 

để

DSmailrelay.example.com 

sau đó khởi động lại sendmail và nó làm việc.

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