投稿日:2025/1/19最終更新日:2026/3/29
本番設定でDNS設定がされているメールアドレスへのメールをlocalhostに送信したかったのです
さくらのメールボックスでホストしている、DNS含め設定が完了しているメールドメインがあるのですが、訳あってそのドメインのアドレス宛のメールを、localhostのメールサーバーに送りつけたいという状況です。
決してスパムではありません。
ちょうどよかったので、s-nail,swaksの純正の機能でlocalhostにホスト指定で送付する設定を確認しました。
つまりは、Postfixなどをリレーとして利用せず、ただ任意のホストを指定してMUAから直接相手のメールサーバーに送信する方法です。
TELNETを使えばいい話なのですが、面倒なのとあくまでMUAから送信したかったので。
mailコマンドです。
echo "TEST MAIL" | mail \
-r [email protected] \
-s "Test Subject" \
-S mta=smtp://localhost:25 \
-S smtp-auth=none \
-S v15-compat=yes \
[email protected]mail -vとすると以下のような出力がでます。mail: No such file to load: /home/user/.mailrc
mail: P(seudo)R(andom)N(umber)G(enerator): arc4random
mail: Resolving host localhost:25 ... done
mail: Connecting to IP_REMOTE_HOST:25 ... connected.mailコマンドの使い方の解説になってしまいますが、echo "TEST MAIL"の部分が本文で、-s "Test Subject"が件名です。
-S v15-compat=yesについては、以下のような警告がうざいので消すためにつけています。mail: Obsoletion warning: Use of old-style credentials, which will vanish in v15!
mail: Please read the manual section "On URL syntax and credential lookup"echo "TEST MAIL" | swaks \
--server localhost \
--port 25 \
--to [email protected] \
--from [email protected] \
--header "Subject: Test Subject" \
--body "TEST MAIL"=== Trying HOSTNAME:25...
=== Connected to HOSTNAME.
<- 220 HOSTNAME ESMTP Sendmail 8.16.1/8.16.1; Sun, 18 Jan 2026 02:52:11 +0900 (JST)
-> EHLO localhost.local
<- 250-HOSTNAME Hello [IPv6:[::]], pleased to meet you
<- 250-ENHANCEDSTATUSCODES
<- 250-PIPELINING
<- 250-8BITMIME
<- 250-SIZE 209715200
<- 250-DSN
<- 250-ETRN
<- 250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN
<- 250-STARTTLS
<- 250-DELIVERBY
<- 250 HELP
-> MAIL FROM:<[email protected]>
<- 250 2.1.0 <[email protected]>... Sender ok
-> RCPT TO:<[email protected]>
<- 250 2.1.5 <[email protected]>... Recipient ok
-> DATA
<- 354 Enter mail, end with "." on a line by itself
-> Date: Sun, 18 Jan 2026 02:52:11 +0900
-> To: [email protected]
-> From: [email protected]
-> Subject: Test From BC
-> Message-Id: <[email protected]>
-> X-Mailer: swaks vDEVRELEASE jetmore.org/john/code/swaks/
->
-> TEST MAIL from BadCompany
->
->
-> .
<- 250 2.0.0 60HHqBtP051431 Message accepted for delivery
-> QUIT
<- 221 2.0.0 HOSTNAME closing connection
=== Connection closed with remote host.こっちはデフォルトで詳細なログが出ます。
ログを消すには、以下のようにオプションを有効にします。
# エラー以外を表示しない (エラー発生後は詳細も表示)
echo "TEST MAIL" | swaks --silent \
# エラーのみ表示
echo "TEST MAIL" | swaks --silent 2 \
# 完全に何も表示しない
echo "TEST MAIL" | swaks --silent 3 \-S (または --silent) オプションを使用することで、出力を抑制できます。
--silentを1回(または引数なし)指定するとエラーが出るまで無表示になり、2だとエラーのみ、3だと完全に無表示になります。
これで25番ポートに直接接続して、暗号化・認証なしにメールを送りつけることができますね。

s-nail warning about old style | bbs.archlinux.org