でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
テストの前に——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
また、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))
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
キューにメールが残っている場合は、配送に問題が発生しています。後述の「ログ確認」で原因を特定してください。
3. ローカル配送テスト(root宛)
まず外部に送る前に、ローカル(サーバー自身)に送れるか確認するのが安全です。# root宛てにテストメールを送る # echo "ローカル配送テスト" | mail -s "Local Test" root # rootのメールボックスを確認する # mail -u root # または # cat /var/spool/mail/root
外部への送信が失敗する場合は、ネットワーク・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 が返れば接続成功。次のコマンドを入力する
接続できない場合(「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
自分のドメイン宛には送れるが、外部ドメイン宛に送れない場合は、送信元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
最後の行の「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=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
本番環境のメールサーバー設定確認には、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
別の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 |
リアルタイムログ監視 |
telnetによるSMTP直接対話は一手間かかりますが、エラーがどのSMTPコマンドで発生しているかが明確になるため、複雑なトラブルの切り分けに非常に有効です。
Postfixだけでなく、サーバー全体を体系的に学びませんか?
メールサーバーの構築・運用は、Linuxサーバー管理のスキルの総合力が問われます。
ネットの断片的な情報に頼るのではなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:yumにリポジトリを追加・変更する方法|EPELの設定とyum.repos.dの書き方
- 前のページへ:CentOS7.1のダウンロード
- この記事の属するカテゴリ:Linuxサーバー構築へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます