Máy chủ SMTP đi nhẹ


46

Bạn sử dụng cái gì như một SMTP nhẹ chỉ cho các email gửi đi?

Tôi đang chạy một ứng dụng gửi e-mail qua SMTP khi các sự kiện xảy ra một lần và tôi không cần một máy chủ email đầy đủ tính năng.

EDIT: Tôi rất vui khi sử dụng một cái gì đó như postfix (và do), nếu đó là sự lựa chọn tốt nhất. Tôi đã nghĩ có thể có một cái gì đó đơn giản hơn nhiều, nó chạy ra khỏi hộp.


Tôi nghĩ rằng nó là hoàn toàn hợp lý để gắn bó với một cái gì đó như exim và postfix. Chúng không khó cấu hình nếu bạn đang làm những việc đơn giản.
Faheem Mitha

Định nghĩa của bạn về "nhẹ" là gì? Làm thế nào lớn bạn đang mong đợi các tin nhắn sẽ được? Bao lâu thì "thỉnh thoảng"?
Mike B

Câu trả lời:


22

Có một số lựa chọn về các tác nhân chuyển thư tối thiểu, chỉ chuyển tiếp (MTA hoặc "máy chủ thư"), một số trong đó đã được đề cập trong các câu trả lời khác:

Để một trong hai hoạt động, bạn cần một MTA chính thức ở đâu đó sẽ tiếp tục chuyển tiếp thư của bạn (được gọi là "trung tâm thư") và chúng tôi khuyên bạn nên kiểm soát trung tâm thư này. Những điều tồi tệ ™ có thể xảy ra nếu không.


esmtp không còn được duy trì.
Nikola Kotur

1
nullmailer có một vấn đề nghiêm trọng về tuân thủ SMTP: nó sẽ thử lại vô hạn khi gặp lỗi vĩnh viễn. Điều này có thể bạn tốn tiền thật nếu bạn phải trả cho băng thông / quá cảnh bugs.debian.org/cgi-bin/bugreport.cgi?bug=329192
telent

@telent: bạn không nên sử dụng nullmailer trong trường hợp như vậy.

Cảm ơn! Hướng dẫn cấu hình tại troubleooters.com/linux/nullmailer lưu ý vấn đề bảo mật với nullmailer: nó hiển thị mật khẩu trên dòng lệnh hoặc ít nhất được sử dụng để làm điều đó. Các cuộc hội thoại khác lưu ý rằng mstmp làm cho nó rõ ràng hơn một chút về cách xử lý thư so với nullmailer.
nealmcb

11

IMHO, cách dễ nhất để làm điều này là với postfix. Bạn có thể cấu hình nó như một rơle phát sáng với các lệnh sau:

postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com

Miễn là máy chủ SMTP được chỉ định trong relayhostkhông yêu cầu xác thực, cho phép bạn chuyển tiếp hoặc là đích đến hợp lệ cho địa chỉ người nhận, điều này sẽ hoạt động.

Các myorigintham số sẽ là tên miền mặc định. Vì vậy, nếu bạn gửi thư đến foo, nó sẽ chuyển đến foo@my.domainname.com. Thư được gửi bởi thanh người dùng sẽ từ bar@my.domainname.com.

Nếu bạn cần xác thực và muốn hỗ trợ TLS, hãy chạy các lệnh sau:

postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps

Sau đó, /etc/postfix/sasl_password_mapscó nội dung này:

/./ username:password

Tất cả thư sẽ được gửi đến Relayhost của bạn với tên người dùng và mật khẩu được chỉ định.


Đã thử các cài đặt này và tôi gặp lỗi: "lỗi: loại từ điển không được hỗ trợ: pcre"
valentt

1
Cài đặt pcre và / hoặc postfix-pcre và thử lại.
bahamat

Tôi cũng đã hiểu ra, trong lúc này, có hai gói bị thiếu, gói đầu tiên là postfix-pcre như bạn đã nói, nhưng gói kia là một gói lạ - libsasl2-mô-đun. Tôi khó hiểu làm thế nào libsasl2 và libsasl2-mô-đun-db đã được cài đặt nhưng libsasl2-mô-đun bị thiếu ... Bây giờ cuối cùng mọi thứ đều hoạt động. Bạn có thể vui lòng thêm thông tin quan trọng này vào câu trả lời của bạn?
valentt

1
Đối với tls, tôi cũng đã sử dụng: relayhost=other.mailserver.com:465sau đó smtp_tls_wrappermode=yessmtp_tls_security_level=encryptnó đang cố gắng sử dụng người dùng cục bộ làm auth. Tôi phải viết lại người dùng auth bằng cách nào đó.
tu-Tái lập Monica-dor duh

"Miễn là máy chủ SMTP được chỉ định trong Relayhost không yêu cầu xác thực" -> ok, nhưng điều đó hiếm khi xảy ra hiện nay. Đề nghị của bạn là chính xác, nhưng chủ yếu là không liên quan!
FarO

9

Giả sử bạn cần một chương trình bạn có thể chạy từ shell như sendmail (8), có lẽ MSMTP sẽ phù hợp với nhu cầu của bạn? Nó có thể kết nối với một máy chủ SMTP từ xa và gửi thư mà nó nhận được dưới dạng stdin, giống như sendmail.


Tôi sử dụng MSMTP cho việc này, hoạt động rất tốt và cấu hình rất đơn giản.
dsp

Tôi rất vui vì bạn đã đề nghị này. Tôi đã tìm kiếm một cái gì đó như thế trong một thời gian khá lâu. Cấu hình của sendmail chỉ là cách quá khác biệt cho nhu cầu của tôi.
ixtmixilix


2

Bạn có thể tìm thấy sSMTP phù hợp với nhu cầu của bạn. Đọc bài viết này về nó và những hạn chế của nó.

Thành thật mà nói, tôi sẽ không quá căng thẳng về việc cài đặt postfix hoặc exim, ngay cả khi nó chỉ để gửi email.


1
+1 cho ssmtp, -1 cho nhận xét không cần thiết tại sendmail, cũng như khuyến nghị sử dụng một mta đầy đủ, đó là cách khó hơn để làm đúng. cấu hình và bảo trì máy chủ mail xấu làm cho cuộc sống của chúng tôi quản trị thư.

@hop: Tôi không đồng ý cả hai tính. sendmail là khủng khiếp. Ngoài ra, ví dụ exim là mặc định Debian và hoàn toàn đơn giản để sử dụng. Postfix cũng vậy, có lẽ, nhưng tôi chưa bao giờ sử dụng nó.
Faheem Mitha


1

Về mặt kỹ thuật, bạn không cần một máy chủ email trên máy chủ của mình, thứ bạn cần (và có thể đã có) là một máy khách smtp (hoặc MUA) có thể kết nối với Máy chủ SMTP công ty của bạn (có thể là bất cứ nơi nào bạn có thể kết nối với .)

Tùy thuộc vào Ứng dụng (và ngôn ngữ lập trình được viết), có nhiều cách khác nhau để ứng dụng của bạn kết nối với 'Máy chủ SMTP trên mạng của bạn.

Thông thường, với PHP hoặc Python, có một tệp cấu hình với ứng dụng để chỉ định Máy chủ "SMTP" (có thể trên máy chủ của bạn hoặc ở nơi khác trên mạng của bạn.) Nếu bạn đã có máy chủ thư trên mạng, hãy chỉ vào cấu hình cho máy chủ đó.

Nếu không có tùy chọn nào khác tồn tại, ứng dụng có thể tạo thông điệp email đến đầu ra tiêu chuẩn mà bạn có thể xử lý với nội dung như:

listoftarget = "me@example.com jab@example.com" echo "Nội dung kiểm tra" | mail -s "Đối tượng thử nghiệm" $ listoft Target

Trên một số hệ thống, đã có một máy chủ thư tối thiểu chỉ gửi.

Sâm T.


Tôi có cả đống máy chủ trong đám mây và tôi thực sự muốn mỗi máy chủ đều có máy chủ SMTP gửi đi, thay vì dựa vào bất cứ thứ gì bên ngoài. Theo cách đó, nếu máy chủ SMTP từ xa của tôi không hoạt động, nó sẽ không ảnh hưởng đến mọi máy chủ.
FlappySocks

1) nếu bạn để PHP hoặc Python thực hiện phần smtp, bạn phải thực hiện tất cả công việc (xếp hàng, xử lý lỗi) mà MTA sẽ xử lý. 2) ở cuối bạn mâu thuẫn với những gì bạn nói lúc đầu

Một số ứng dụng linux được thiết lập để mong đợi mailhoặc sendmailđược đặt tên thực thi. Thông báo hệ thống. Đó là toàn bộ vấn đề phải không? Đối với bất cứ điều gì khác không có ràng buộc.
Craig Hicks
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.