次のコマンドを使用してメールを送信するとします。
mailx [email protected]
次に、mailxはまず、メールをリレーするためにISPのSMTPサーバーを見つけようとしますか、それとも直接接続しますか? PCにパブリックIPアドレスがあるか、NATの背後にあるかによって異なりますか。 PCのmailxの設定を確認するにはどうすればよいですか? tcpdumpを使用してこれを確認するにはどうすればよいですか?
伝統的に、Unix mail
および派生物(および他の多くのUnixツール)は、ほぼすべてのメール転送エージェント(MTA – postfix、exim、courier、およびもちろんsendmail)によって提供される/usr/bin/sendmail
インターフェースを使用します。
つまり、mail
プログラムはネットワークプロトコルを話せません。メッセージはstdin経由でsendmail
に送られ、実際の配信を処理します。 (これは、SMTPを使用したメール、UUCPを使用したメール、BITNETを使用したメールなどの時代にさかのぼります...)
メッセージがsendmail
を介してキューに入れられると、MTAは、SMTPを介するかどうかに関係なく、実際のメッセージ送信を処理します。構成に応じて、宛先MTAに直接接続するか、別のホスト(スマートホストとも呼ばれます)経由でメールを中継します。
サーバーでは直接接続がより一般的です。スマートホストを介したリレーは、ホーム接続のパーソナルコンピューターでより一般的です。GmailまたはISP /職場の電子メールアカウントを介したリレーは、包括的な「動的IP」アンチスパムフィルターを回避するために不可欠です。
(esmtp
やnullmailer
などの一部の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→スパムフィルターによって検出
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に入れることもできます
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.