Mailx có gửi thư bằng chuyển tiếp SMTP không hoặc nó có kết nối trực tiếp với máy chủ SMTP đích không?


30

Giả sử tôi gửi thư bằng lệnh sau:

mailx person@x.com

sau đó, mailx trước tiên cố gắng tìm ra máy chủ SMTP của ISP của tôi để chuyển tiếp thư hoặc nó có kết nối trực tiếp không. Nó phụ thuộc vào việc PC của tôi có địa chỉ IP công cộng hay nó nằm sau NAT. Làm cách nào để kiểm tra cài đặt của mailx trên PC của tôi? Làm thế nào tôi có thể xác minh điều này bằng cách sử dụng tcpdump?

Câu trả lời:


29

Theo truyền thống, Unix mailvà các công cụ phái sinh (và nhiều công cụ Unix khác) sử dụng /usr/bin/sendmailgiao diện, được cung cấp bởi hầu hết tất cả các tác nhân chuyển thư (MTA - postfix, exim, chuyển phát nhanh, và tất nhiên là sendmail).

Đó là, mailchương trình không nói bất kỳ giao thức mạng nào - nó cung cấp thông điệp đến sendmailthông qua stdin và cho phép nó xử lý việc phân phối thực tế. (Điều này quay trở lại thời mà một số thư đã sử dụng SMTP, một số UUCP đã sử dụng, một số BITNET đã sử dụng ...)

Khi một tin nhắn được xếp hàng qua sendmail, MTA sẽ xử lý việc truyền tin nhắn thực tế, cho dù thông qua SMTP hay thứ gì khác. Tùy thuộc vào cấu hình, nó có thể kết nối trực tiếp với MTA đích hoặc chuyển tiếp thư qua một máy chủ khác (còn được gọi là smarthost).

Kết nối trực tiếp phổ biến hơn trên các máy chủ; chuyển tiếp qua smarthost phổ biến hơn trên các máy tính cá nhân trên các kết nối gia đình - chuyển tiếp qua tài khoản email Gmail hoặc ISP / công việc của bạn là điều cần thiết để tránh các bộ lọc chống thư rác "IP động".

(Một số MTA như esmtphoặc nullmailerđược xây dựng dành riêng cho người dùng gia đình và luôn sử dụng rơle. Chúng không hỗ trợ nhận thư và nhẹ hơn nhiều về tài nguyên.)

mailx → [/ usr / bin / sendmail] → hàng đợi MTA cục bộ → [SMTP] → MTA người nhận → hộp thư đến người nhận
mailx → [/ usr / bin / sendmail] → hàng đợi MTA cục bộ → [SMTP] → Gmail hoặc ISP / máy chủ công việc → [SMTP] → MTA người nhận → hộp thư đến người nhận

Các chương trình khác, chủ yếu là các máy khách đồ họa thân thiện với người dùng như Thunderbird hoặc Outlook, luôn kết nối trực tiếp với máy chủ SMTP chuyển tiếp / smarthost (một lần nữa, thường là Gmail hoặc ISP / máy chủ SMTP công việc), thay mặt bạn truyền tin nhắn.

Hỗ trợ SMTP gốc có mặt heirloom-mailx, nhưng không phải trong truyền thống bsd-mailx.

ứng dụng → [SMTP] → Gmail hoặc ISP / máy chủ công việc → [SMTP] → MTA người nhận → hộp thư đến người nhận

Phương pháp thứ ba - kết nối trực tiếp với máy chủ của người nhận - gần như không bao giờ được sử dụng và không MUA nào hỗ trợ. Trên máy tính cá nhân, sử dụng nó sẽ khiến tin nhắn của bạn bị từ chối (rất nhiều thư rác được gửi từ các địa chỉ IP của người dùng gia đình bị nhiễm bệnh).

ứng dụng → [SMTP] → MTA người nhận → bị bộ lọc thư rác bắt

1
Làm thế nào để tìm ra MTA của tôi trên linux?
Rohit Banga

1
@iamrohitbanga 1) Kiểm tra danh sách các gói đã cài đặt. (Không phải tất cả các bản phân phối đều đi kèm với MTA theo mặc định.)
grawity

1
@iamrohitbanga 2) Tôi đã trả lời rồi. Outlook thường được sử dụng trên máy tính cá nhân tại nhà và nhiều người gửi thư từ chối các tin nhắn nhận được từ địa chỉ của người dùng gia đình (vì tỷ lệ spam cao từ những người đó). Đó là lý do tại sao chuyển tiếp qua máy chủ của công ty là cần thiết.
grawity

1
@iamrohitbanga 3) "hoặc" có nghĩa là "một trong hai", không phải "cả hai". Những người sử dụng Gmail làm tài khoản thư chính của họ sẽ gửi thư qua máy chủ của Gmail. Những người có hộp thư tại ISP của họ sử dụng máy chủ của ISP.
grawity

1
@iamrohitbanga 4) Đó là vì mailx không sử dụng "phương pháp thứ ba". Nó sử dụng một MTA như được mô tả trên đầu câu trả lời của tôi. Và một lần nữa, nếu bạn không kết nối Internet công ty, thư được gửi trực tiếp từ PC của bạn (không có chuyển tiếp) rất có thể bị loại bỏ.
grawity

31

mailx có thể sử dụng SMTP. Tệp cấu hình của nó là ~ / .mailrc

Một ví dụ là mailx sử dụng SMTP của Gmail .

Cấu hình thậm chí có thể nằm trong một lệnh:

mailx -v -s "$EMAIL_SUBJECT" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://smtp.gmail.com:587 \
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
-S smtp-auth-user=$FROM_EMAIL_ADDRESS \
-S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \
-S ssl-verify=ignore \
-S nss-config-dir=~/.mozilla/firefox/xxxxxxxx.default/ \
$TO_EMAIL_ADDRESS

Nếu một máy chủ SMTP bình thường được sử dụng, nó sẽ dễ dàng hơn nhiều (xem phần giới thiệu chi tiết tại đây ):

mailx -v -s "$EMAIL_SUBJECT" \
-S smtp=smtp://smtp.example.com
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
$TO_EMAIL_ADDRESS

Bạn cũng có thể đặt chúng vào tệp cấu hình của mailx ~ / .mailrc


Lưu ý rằng điều này phụ thuộc vào gia truyền-mailx không phải là mailx mặc định.
Scott

@ Hủy: Có. Nhưng phụ thuộc vào bản phân phối Linux. Trên một số hệ thống, mặc định không phải là gia truyền (ví dụ: Ubuntu: fclose.com/b/linux/1411/ mẹo . Có vẻ như có 3 phiên bản mailx). Trên một số ứng dụng khác như Fedora, OpenSUSE, mặc định là "tính năng phong phú" "gia truyền-mailx".
ericzma

@ericzma Tôi đoán gia truyền-mailx là tốt nhất / là gia truyền là mailx duy nhất có thể làm điều đó (chỉ định từ và máy chủ smtp tại dòng lệnh)? Nó hoạt động độc đáo trên Debian mặc dù không được cài đặt theo mặc định. Trên Debian mailx liên kết đến / etc / thay thế / mailx liên kết đến / usr / bin / bsd-mailx Sau khi cài đặt heirloom-mailx tới debian, / etc / thay thế / mailx liên kết đến / usr / bin / heirloom-mailx và hoạt động độc đáo
barlop

@barlop Phát hiện của bạn phù hợp với tôi: heirloom-mailx hoạt động trong khi bsd-mailx thì không. Không biết về việc thực hiện làm việc khác chưa.
ericzma

CentOS 6.7 sử dụng thư gia truyền 12,4
Joshua Grigonis

3

Từ mailx(1)trang man, phần MÔ TẢ , phần phụ Tùy chọn chuỗi :

   smtp   Normally, mailx invokes sendmail(8) directly to  transfer
          messages.  If the smtp variable is set, a SMTP connection
          to the server specified by the value of this variable  is
          used  instead.

Điều này làm tôi bối rối một chút. bạn có thể được xây dựng nhiều hơn
Rohit Banga

Uhh ... nó sử dụng sendmailtrừ khi tùy chọn này được đặt.
Ignacio Vazquez-Abrams

1

có một sự thay thế mà không có mta địa phương như sendmail / postix.

gói siantp

Thông tin từ mô tả vòng / phút:

Summary     : Extremely simple MTA to get mail off the system to a Mailhub
URL         : http://packages.debian.org/stable/mail/ssmtp
License     : GPLv2+
Description : A secure, effective and simple way of getting mail off a system to your mail
            : hub. It contains no suid-binaries or other dangerous things - no mail spool
            : to poke around in, and no daemons running in the background. Mail is simply
            : forwarded to the configured mailhost. Extremely easy configuration.

thứ

Stefan K


1
Hầu như ... ssmtp là một ứng dụng khách giống như MTA. Nó hoạt động như / usr / bin / sendmail nhưng thay vì kết nối trực tiếp với bản ghi MX của một tên miền cụ thể, nó ủy thác nhiệm vụ này cho máy chủ SMTP có thể truy cập (thường thông qua tên người dùng / mật khẩu) cho máy chạy ssmtp. Điều này đặc biệt hữu ích cho những hệ thống gửi email từ các dải IP spam cao như dải IP động ADSL, nhà cung cấp dịch vụ lưu trữ tinh ranh, v.v.
Andre de Miranda
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.