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

linux mailx nat smtp

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

mailx person@x.com

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

  34  Rohit Banga  2010-05-04


ベストアンサー

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

つまり、mailプログラムはネットワークプロトコルを話さず、標準入力を介してsendmailにメッセージを送り、実際の配送はsendmailに任せます。(これは、ある種のメールがSMTPを使っていた時代、ある種のメールがUUCPを使っていた時代、ある種のメールがBITNETを使っていた時代にさかのぼります…)

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

サーバでは直接接続がより一般的です。自宅接続のパソコンでは、smarthost経由での中継がより一般的です

(esmtpnullmailerのような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サポートはheirloom-mailxにはありますが、従来のbsd-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

32  user1686  2010-05-04


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

一例として、GmailのSMTPを使ったmailxがあります

configureは1つのコマンドでもOKです

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

34  ericzma  2010-12-06


mailx(1) の man ページの DESCRIPTION セクション、文字列オプションのサブセクションを参照してください

   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.

4  Ignacio Vazquez-Abrams  2010-05-04


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.

1  StefanKaerst  2014-01-27


タイトルとURLをコピーしました