web-dev-qa-db-ja.com

mailxはSMTPリレーを使用してメールを送信しますか、それともターゲットのSMTPサーバーに直接接続しますか?

次のコマンドを使用してメールを送信するとします。

mailx [email protected]

次に、mailxはまず、メールをリレーするためにISPのSMTPサーバーを見つけようとしますか、それとも直接接続しますか? PCにパブリックIPアドレスがあるか、NATの背後にあるかによって異なりますか。 PCのmailxの設定を確認するにはどうすればよいですか? tcpdumpを使用してこれを確認するにはどうすればよいですか?

32
Rohit Banga

伝統的に、Unix mailおよび派生物(および他の多くのUnixツール)は、ほぼすべてのメール転送エージェント(MTA – postfix、exim、courier、およびもちろんsendmail)によって提供される/usr/bin/sendmailインターフェースを使用します。

つまり、mailプログラムはネットワークプロトコルを話せません。メッセージはstdin経由でsendmailに送られ、実際の配信を処理します。 (これは、SMTPを使用したメール、UUCPを使用したメール、BITNETを使用したメールなどの時代にさかのぼります...)

メッセージがsendmailを介してキューに入れられると、MTAは、SMTPを介するかどうかに関係なく、実際のメッセージ送信を処理します。構成に応じて、宛先MTAに直接接続するか、別のホスト(スマートホストとも呼ばれます)経由でメールを中継します。

サーバーでは直接接続がより一般的です。スマートホストを介したリレーは、ホーム接続のパーソナルコンピューターでより一般的です。GmailまたはISP /職場の電子メールアカウントを介したリレーは、包括的な「動的IP」アンチスパムフィルターを回避するために不可欠です。

esmtpnullmailerなどの一部のMTAは、ホームユーザー向けに特別に構築されており、alwaysはリレーホストを使用します。これらのドンはメールの受信をサポートしていないため、リソースが大幅に軽減されます)。

mailx→[/ usr/bin/sendmail]→ローカルMTAキュー→[SMTP]→受信者MTA→受信者インボックス
mailx→[/ usr/bin/sendmail]→ローカルMTAキュー→[SMTP]→GmailまたはISP /ワークサーバー→[SMTP]→受信者MTA→受信トレイ

他のプログラム、主にThunderbirdやOutlookなどのユーザーフレンドリーなグラフィカルクライアントは常にリレー/スマートホストSMTPサーバーに直接接続します(これも通常はGmailまたはISP /仕事用SMTPサーバー)。ユーザーに代わってメッセージを送信します。

ネイティブSMTPサポートはheirloom-mailxにありますが、従来のbsd-mailxにはありません。

アプリ→[SMTP]→GmailまたはISP /作業サーバー→[SMTP]→受信者MTA→受信者受信トレイ

3番目の方法(受信者のサーバーに直接接続する)は、ほぼneverが使用され、MUAはこれをサポートしていません。パーソナルコンピュータでは、これを使用するとメッセージが拒否されます(感染したホームユーザーのIPアドレスから大量のスパムが送信されます)。

アプリ→[SMTP]→受信者MTA→スパムフィルターによって検出
30
user1686

mailxはSMTPを使用できます。設定ファイルは〜/ .mailrcです

1つの例は GmailのSMTPを使用するmailx です。

設定は1つのコマンドで行うこともできます。

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

通常のSMTPサーバーを使用すると、はるかに簡単になります(詳細な概要 こちら を参照):

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

これらをmailxの設定ファイル〜/ .mailrcに入れることもできます

31
ericzma

mailx(1)のマニュアルページから、[〜#〜] description [〜#〜]セクション、String Optionsサブセクション:

   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.

sendmail/postfixのようなローカルmtaのない代替手段があります。

debianパッケージsmtp

rpmの説明からの情報:

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.

hth

ステファンK.

1
StefanKaerst