PostfixでSMTPメール送信をテストする方法|mailコマンド・telnet・ログ確認まで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxサーバー構築 > PostfixでSMTPメール送信をテストする方法|mailコマンド・telnet・ログ確認まで

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

テストの前に——Postfixの起動確認

テスト送信の前に、Postfixが正常に起動しているかを確認してください。

# Postfixの状態を確認する # systemctl status postfix postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: disabled) Active: active (running) since Tue 2026-04-01 10:00:00 JST; 2h ago Process: 1234 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS) # 停止している場合は起動する # systemctl start postfix # systemctl enable postfix

「Active: active (running)」と表示されれば、Postfixは正常に動いています。

また、SMTPポート(25番)でリッスンしているかも確認しておきましょう。

# 25番ポートでPostfixが待ち受けているか確認する # ss -tlnp | grep :25 LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master",pid=1235,fd=13))

`master` プロセスが 25番ポートを待ち受けていればOKです。

mailコマンドでテスト送信する

1. mailコマンドのインストール確認

mailコマンドはデフォルトではインストールされていない場合があります。

# RHEL/CentOS系でのインストール # dnf install mailx -y # Ubuntu/Debian系でのインストール # apt install mailutils -y # インストール確認 # which mail /usr/bin/mail

2. 基本的なテスト送信

インストール後、以下のコマンドでテストメールを送信できます。

# 件名と宛先を指定して送信する(本文は標準入力から) # echo "テストメールです。" | mail -s "Postfix送信テスト" pakira@example.com # 複数行の本文を送る場合 # mail -s "テスト" pakira@example.com << EOF > これはテストメールです。 > Postfixの動作確認用です。 > EOF

送信後にメールキューを確認してください。

# キューにメールが溜まっていないか確認する # postqueue -p Mail queue is empty

「Mail queue is empty」と表示されれば、送信は完了しています。
キューにメールが残っている場合は、配送に問題が発生しています。後述の「ログ確認」で原因を特定してください。

3. ローカル配送テスト(root宛)

まず外部に送る前に、ローカル(サーバー自身)に送れるか確認するのが安全です。

# root宛てにテストメールを送る # echo "ローカル配送テスト" | mail -s "Local Test" root # rootのメールボックスを確認する # mail -u root # または # cat /var/spool/mail/root

ローカル配送が成功すれば、Postfix自体は正常に動いています。
外部への送信が失敗する場合は、ネットワーク・DNS・リレー設定の問題です。

telnetでSMTP通信を直接確認する

mailコマンドはPostfixを経由してメールを送るため、SMTP通信の詳細が見えません。
telnetを使うと、SMTPのやり取りを1コマンドずつ手動で確認でき、どのステップで失敗しているかが一目瞭然になります。

1. ローカルのSMTPに接続する

# ローカルの25番ポートに接続する # telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.linuxmaster.jp ESMTP Postfix (2.10.1) # 220 が返れば接続成功。次のコマンドを入力する

「220」はSMTPのサービス準備完了を示すレスポンスコードです。
接続できない場合(「Connection refused」)は、Postfixが起動していないか、25番ポートがファイアウォールでブロックされています。

2. SMTPコマンドを手動で入力してテストする

接続後、以下の順でSMTPコマンドを入力してください。

# ①挨拶(HELOまたはEHLO) EHLO localhost 250-mail.linuxmaster.jp 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 # ②送信者を指定 MAIL FROM: 250 2.1.0 Ok # ③受信者を指定 RCPT TO: 250 2.1.5 Ok # ④本文の入力開始 DATA 354 End data with . # ⑤メールヘッダーと本文を入力 Subject: SMTPテスト From: test@linuxmaster.jp これはtelnetによるSMTPテストです。 . 250 2.0.0 Ok: queued as ABC123 # ⑥終了 QUIT 221 2.0.0 Bye

各コマンドのレスポンスコードの意味は次のとおりです。

220:接続成功・サービス準備完了
250:コマンド成功
354:DATA入力開始(「.」だけの行で終了)
221:接続を閉じる
4xx:一時的なエラー(再試行可能)
5xx:永続的なエラー(設定の修正が必要)

3. 「relay access denied」エラーが出た場合

RCPT TO: 554 5.7.1 : Relay access denied

このエラーは、Postfixが設定していないドメインへのリレーを拒否しているサインです。
自分のドメイン宛には送れるが、外部ドメイン宛に送れない場合は、送信元IPアドレスが mynetworks に含まれていない可能性があります。

# /etc/postfix/main.cf の mynetworks を確認する # grep mynetworks /etc/postfix/main.cf mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 # サーバー自身のIPを mynetworks に追加する場合 # vi /etc/postfix/main.cf mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24 # 設定変更後はリロードが必要 # systemctl reload postfix

メールログでエラーの原因を特定する

テスト送信後は必ずログを確認してください。
成功・失敗に関わらず、Postfixはすべての動作をログに記録しています。

1. メールログの確認方法

# RHEL/CentOS系(rsyslog使用) # tail -50 /var/log/maillog # Ubuntu/Debian系(rsyslog使用) # tail -50 /var/log/mail.log # systemd-journald使用環境(RHEL 9等) # journalctl -u postfix --since "1 hour ago" # または # journalctl -xe -u postfix

2. 正常送信時のログの見方

# 正常に送信できた場合のログ例 Apr 1 10:05:12 mail postfix/pickup[1234]: ABC123: uid=0 from= Apr 1 10:05:12 mail postfix/cleanup[1235]: ABC123: message-id=<20260401010512.ABC123@mail.linuxmaster.jp> Apr 1 10:05:12 mail postfix/qmgr[1236]: ABC123: from=, size=412, nrcpt=1 (queue active) Apr 1 10:05:13 mail postfix/smtp[1237]: ABC123: to=, relay=mail.example.com[203.0.113.1]:25, delay=0.8, delays=0.1/0.0/0.4/0.3, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as XYZ456) Apr 1 10:05:13 mail postfix/qmgr[1236]: ABC123: removed

「status=sent」と表示されていれば送信成功です。
最後の行の「removed」はキューから削除された(正常配送完了)を意味します。

3. エラー時のログの読み方

# DNS解決失敗の場合 Apr 1 10:05:15 mail postfix/smtp[1237]: ABC123: to=, relay=none, delay=30, delays=0.1/0.0/30/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=example-bad.jp type=MX: Host not found, try again) # 接続タイムアウトの場合 Apr 1 10:05:45 mail postfix/smtp[1237]: ABC123: to=, relay=none, delay=300, delays=0.1/0.0/300/0, dsn=4.4.1, status=deferred (connect to mail.example.com[203.0.113.1]:25: Connection timed out)

ログの「dsn=」の値でエラーの種類が分かります。注意が必要なのは、dsn=4.x.xは自動再試行されますが、ディスク容量の逼迫や長期間の滞留が発生すると正常メールにも影響するため放置は禁物です。

dsn=2.x.x:成功
dsn=4.x.x:一時的なエラー(自動再試行される)
dsn=5.x.x:永続的なエラー(設定変更が必要)

送信テスト用ツール swaks(より高度なテスト)

mailコマンドやtelnetより高度なテストには、swaks(Swiss Army Knife for SMTP)が便利です。

# swaksのインストール # dnf install swaks -y # RHEL/CentOS系 # apt install swaks -y # Ubuntu/Debian系 # 基本的なテスト送信 # swaks --to pakira@example.com --from test@linuxmaster.jp --server localhost # SMTP-AUTHを使ったテスト # swaks --to pakira@example.com --from test@linuxmaster.jp \ --server mail.linuxmaster.jp \ --auth LOGIN \ --auth-user test@linuxmaster.jp \ --auth-password "yourpassword" # TLS(STARTTLS)を使ったテスト # swaks --to pakira@example.com --server mail.linuxmaster.jp --tls

swaksはSMTPのやり取りをリアルタイムで表示してくれるため、どのステップで問題が起きているかがmailコマンドより格段に見やすいです。
本番環境のメールサーバー設定確認には、telnetよりswaksを使うことをお勧めします。

トラブルシュート——よくあるエラーと対処法

「Connection refused」が出る場合

Postfixが起動していないか、25番ポートがファイアウォールでブロックされています。

# Postfixの起動確認 # systemctl status postfix # ファイアウォールの確認(firewalld) # firewall-cmd --list-all | grep 25 # 25番ポートを開放する # firewall-cmd --add-service=smtp --permanent # firewall-cmd --reload

「Relay access denied」が出る場合

前述のとおり、mynetworksの設定を確認してください。
また、relayhost経由で送信する設定になっている場合は、relayhostサーバーが適切に設定されているか確認してください。

# relayhostの確認 # grep relayhost /etc/postfix/main.cf relayhost = [smtp.gmail.com]:587 # relayhostが設定されている場合は、認証情報も確認する # cat /etc/postfix/sasl_passwd [smtp.gmail.com]:587 user@gmail.com:password

メールが届かない(キューにも残らない)

送信したはずなのにキューにも見当たらない場合、mailコマンド自体がPostfixを経由していない可能性があります。

# mailコマンドがどのMTAを使っているか確認する # alternatives --display mta mta - status is auto. link currently points to /usr/sbin/sendmail.postfix /usr/sbin/sendmail.postfix - priority 90 Current `best' version is /usr/sbin/sendmail.postfix. # sendmailコマンドがPostfixを指しているか確認する # ls -la /usr/sbin/sendmail lrwxrwxrwx. 1 root root 21 Mar 1 10:00 /usr/sbin/sendmail -> /etc/alternatives/mta

`sendmail.postfix` になっていれば、mailコマンドはPostfix経由で送信しています。
別のMTAを指している場合は `alternatives --config mta` で切り替えてください。

本記事のまとめ

PostfixのSMTP送信テストに使うコマンドと手順を一覧にまとめます。
テスト方法 コマンド 用途
基本テスト送信 echo "本文" | mail -s "件名" 宛先 手軽なテスト送信
ローカル配送テスト echo "本文" | mail -s "件名" root Postfix自体の動作確認
SMTP直接対話 telnet localhost 25 SMTP通信の詳細確認・切り分け
高度なテスト swaks --to 宛先 --server ホスト AUTH/TLS含む総合テスト
キュー確認 postqueue -p 送信後のキュー状態確認
ログ確認(RHEL系) tail -f /var/log/maillog エラー原因の特定
ログ確認(systemd) journalctl -u postfix -f リアルタイムログ監視
テスト送信でうまくいかない場合は「mailコマンドで送信→キュー確認→ログ確認」の順で調べると原因を絞り込めます。
telnetによるSMTP直接対話は一手間かかりますが、エラーがどのSMTPコマンドで発生しているかが明確になるため、複雑なトラブルの切り分けに非常に有効です。

Postfixだけでなく、サーバー全体を体系的に学びませんか?

メールサーバーの構築・運用は、Linuxサーバー管理のスキルの総合力が問われます。
ネットの断片的な情報に頼るのではなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。