メールが送信できない原因と対処方法

目次
メールが送信できない原因と対処方法を解説
メールサーバを運用していると、「メールが送信できない」というトラブルは非常によく発生します。
SMTPサーバの設定ミス、DNS設定の問題、認証エラー、ネットワーク障害など、原因は多岐にわたります。
また、エラーメッセージによって原因の切り分け方法も異なります。
重要なのは、闇雲に設定を変更するのではなく、SMTP通信の流れに沿って原因を切り分けることです。
本記事ではメールが送信できない場合の代表的な原因と対処方法について解説します。
まず確認すべきこと
メール送信障害が発生した場合、まず以下を確認します。
- エラーメッセージ
- SMTPログ
- メールキュー
- ネットワーク疎通
- DNS設定
原因調査の第一歩になります。
SMTP通信の流れを理解する
SMTP通信は以下の流れで行われます。
メール作成
↓
SMTPサーバ接続
↓
認証
↓
DNS問い合わせ
↓
配送先接続
↓
メール送信
どこで失敗しているかを特定することが重要です。
メールキューを確認する
まずメールがキューに残っていないか確認します。
# mailq
または
# postqueue -p大量のメールが残っている場合は配送障害の可能性があります。
ログを確認する
Postfixではログが重要な調査材料になります。
# tail -f /var/log/maillog
または
# journalctl -u postfix -fエラーメッセージを確認しましょう。
原因1 SMTPサーバが起動していない
意外と多い原因です。
まずサービス状態を確認します。
# systemctl status postfix
停止している場合は起動します。
# systemctl start postfix原因2 SMTPポートへ接続できない
SMTPサーバが起動していてもポートが開いていない場合があります。
確認します。
# ss -antp | grep :25SMTPサービスが待ち受けていることを確認します。
原因3 firewalldによる遮断
ファイアウォールでSMTP通信が遮断されている場合があります。
# firewall-cmd --list-services
SMTPが許可されているか確認します。
# firewall-cmd --add-service=smtp原因4 DNS設定ミス
配送先メールサーバを解決できない場合です。
確認します。
# dig MX gmail.com正常に結果が返るか確認します。
原因5 DNSサーバへ接続できない
DNSサーバ自体へ接続できない場合があります。
確認します。
# cat /etc/resolv.conf設定されたDNSサーバへ疎通確認を行います。
原因6 MXレコードが存在しない
配送先ドメインにMXレコードが存在しない場合があります。
# dig MX example.comメール配送先が見つからず失敗することがあります。
原因7 SMTP認証エラー
ユーザー名やパスワードの誤りです。
よくあるエラーです。
535 Authentication failed認証情報を確認します。
原因8 アカウントロック
認証失敗を繰り返した場合です。
Fail2banなどによってIPアドレスが遮断されていることがあります。
ログを確認しましょう。
原因9 TLS設定エラー
暗号化通信で失敗するケースです。
例えば次のようなエラーです。
TLS handshake failed証明書設定を確認します。
原因10 証明書期限切れ
SSL/TLS証明書の期限が切れている場合です。
確認します。
# openssl x509 -in server.crt -text有効期限を確認できます。
原因11 Host not found
配送先ホスト名を解決できない場合です。
Host not foundDNS設定を確認します。
原因12 Connection timed out
配送先SMTPサーバへ接続できない場合です。
Connection timed outネットワーク障害やファイアウォールが原因のことがあります。
原因13 Relay access denied
リレー送信が許可されていない場合です。
Relay access deniedSMTP認証やrelay設定を確認します。
原因14 User unknown
宛先メールアドレスが存在しない場合です。
550 User unknown宛先アドレスを確認します。
原因15 Mailbox full
受信者のメールボックス容量不足です。
552 Mailbox full送信側では解決できません。
原因16 ブラックリスト登録
送信元IPアドレスがブラックリストへ登録されている場合があります。
GmailやMicrosoft 365への配送に影響します。
IP評価を確認しましょう。
原因17 PTRレコード未設定
逆引きDNSが未設定の場合です。
メール自体は送信できても受信側で評価が下がります。
Gmail配送で問題になることがあります。
原因18 SPF未設定
送信元認証が設定されていない場合です。
# dig TXT example.comSPFレコードを確認します。
原因19 DKIM未設定
DKIM署名が無い場合です。
迷惑メール判定の要因になることがあります。
メールヘッダを確認します。
原因20 DMARC未設定
DMARCポリシーが存在しない場合です。
受信側評価に影響することがあります。
TXTレコードを確認しましょう。
ネットワーク疎通確認方法
SMTP接続を確認します。
# telnet smtp.example.com 25
または
# nc -zv smtp.example.com 25接続できればポートは開いています。
SMTP応答を確認する
正常な場合は次のような応答が返ります。
220 mail.example.com ESMTPSMTPサーバが応答していることを意味します。
よく使う確認コマンド
Postfix状態確認です。
# systemctl status postfix
メールキュー確認です。
#mailq
SMTP接続確認です。
# telnet localhost 25
MX確認です。
# dig MX example.com
逆引き確認です。
# dig -x 203.0.113.10実務での切り分け手順
以下の順番で確認すると効率的です。
- ログ確認
- メールキュー確認
- SMTPサービス確認
- ネットワーク確認
- DNS確認
- 認証確認
- 配送先確認
この流れで多くの問題を特定できます。
まとめ
メール送信できない原因はSMTPサーバ停止、DNS障害、認証エラー、ネットワーク障害など様々です。
まずはログとメールキューを確認し、SMTP通信のどこで失敗しているかを特定することが重要です。
また、MXレコードやPTRレコード、SPF、DKIM、DMARCなどDNS設定も重要な確認項目です。
SMTPトラブル対応では、段階的な切り分けを行うことで効率的に原因を特定できます。






