2010-05-04 13:17:09 +0000 2010-05-04 13:17:09 +0000
31
31

mailxはSMTPリレーを使ってメールを送信するのか、ターゲットのSMTPサーバに直接接続して送信するのか。

以下のようなコマンドでメールを送信したとします。

mailx person@x.com

とすると、mailxはまずメールを中継するISPのSMTPサーバを探そうとするのでしょうか、それとも直接接続するのでしょうか。私のPCがパブリックIPアドレスを持っているか、NATの後ろにあるかにもよります。PCのmailxの設定を確認するにはどうすればいいですか?tcpdumpを使って確認する方法を教えてください。

回答 (4)

31
31
31
2010-12-06 16:37:44 +0000

mailxはSMTPを使うことができます。configureファイルは ~/.mailrc

1つの例としては mailx using Gmail’s SMTP .

configureは一つのコマンドでも良い。

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に入れることもできます。

29
29
29
2010-05-04 16:16:41 +0000

伝統的に、Unix の mail とその派生品 (そして他の多くの Unix ツール) は、ほとんどすべてのメール転送エージェント (MTA - postfix, exim, courier, そしてもちろん sendmail) が提供する /usr/bin/sendmail インターフェイスを使用しています。

つまり、mail プログラムはネットワークプロトコルを話しません。(これは、ある種のメールがSMTPを使用し、ある種のメールがUUCPを使用し、ある種のメールがBITNETを使用していた時代にさかのぼります…)

いったんメッセージが sendmail を通してキューに入れられると、MTA は SMTP または他の何かを介しているかどうかに関わらず、実際のメッセージ送信を処理します。設定によっては、宛先のMTAに直接接続するか、他のホスト(スマートホストとも呼ばれる)を経由してメールを中継するかのどちらかになります。

サーバーでは直接接続が一般的ですが、家庭内接続のパソコンではスマートホスト経由での中継が一般的です。

(sendmailesmtp のような MTA の中には、ホームユーザのために特別に作られたものがあり、中継ホストを常に使用しています。これらはメールの受信をサポートしておらず、リソースがかなり軽いです)

mailx → [/usr/bin/sendmail] → local MTA queue → [SMTP] → recipient MTA → recipient inbox
mailx → [/usr/bin/sendmail] → local MTA queue → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox

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

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

app → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox

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

app → [SMTP] → recipient MTA → caught by the spam filter
3
3
3
2010-05-04 13:27:27 +0000

mailx(1) の man ページ、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.
1
1
1
2014-01-27 09:06:23 +0000

sendmail/postix のようなローカル mta を使わない代替案があります。

debian パッケージ ssmtp

情報は 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

Stefan K.

関連する質問

6
10
5
37
13