この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「
warning: connect to transport private/smtp-amavis: No such file or directory という見覚えのないエラーが大量に出る」こうしたメッセージがログに出始めて、メール送信が止まる事象は、私のサポート案件でもAmavis構成のサーバーで定期的に発生します。
この記事では、warning: connect to transport private/smtp-amavis: No such file or directory の対処法を、原因究明から復旧手順・再発防止まで含めて解説します。
原典の現場サポート事例(master.cfの行頭1文字欠落)に加えて、Amavisサービスダウン・ポート競合・SELinux等、私が実際に踏んだ別パターンの原因も併記します。
この記事のポイント
・warning発生の真因はprivate/smtp-amavisソケットが存在しないこと
・第一原因はmaster.cfの記述ミス(行頭欠落・タイポ)
・第二原因はamavisd-newサービスのダウン/ポート競合
・対処法はmaster.cf修正+postfix reload/amavisd起動の2点セット
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
warning: connect to transport private/smtp-amavis発生時に何が起きているか
Postfix + Clam AntiVirus + SpamAssassin(Amavis経由)の構成では、Postfixが受信したメールを一度Amavisに転送してウイルス・スパム判定を行い、結果を再度Postfixに戻すという二段構えで処理しています。このとき、PostfixとAmavisの連携は
/var/spool/postfix/private/smtp-amavis というUNIXソケットを介して行われます。private/smtp-amavis: No such file or directory の警告は、Postfixがこのソケットを開こうとしたが存在しなかったことを示しています。ソケットが存在しない原因は、大きく分けて次の4パターンです。
・master.cf の記述ミス:smtp-amavisエントリの行頭文字欠落・スペル間違い
・Amavisサービスのダウン:amavisd-new サービスが起動していない
・ポート競合・パーミッション異常:10024ポートが他プロセスに掴まれている/ソケット作成権限がない
・SELinux/AppArmorのブロック:セキュリティモジュールがソケット作成を拒否している
warningログを正確に読み取る
対処を始める前に、まずログを正しく読んでください。/var/log/maillog(RHEL系)または /var/log/mail.log(Debian系)に以下のような警告が出力されます。# RHEL系 $ sudo tail -f /var/log/maillog May 18 11:30:15 mail postfix/smtp[12345]: warning: connect to transport private/smtp-amavis: No such file or directory # Debian系 $ sudo tail -f /var/log/mail.log
第一原因:master.cfの記述ミスを修正する
私がこれまでサポートしてきた中で最も多かった原因が、/etc/postfix/master.cf のsmtp-amavisエントリの記述ミスです。原典の事例も、まさに行頭の「s」が抜けた単純記述ミスでした。1. 該当行を確認する
$ sudo grep smtp-amavis /etc/postfix/master.cf
2. 誤りパターン例(行頭「s」欠落)
# 誤り mtp-amavis unix - - n - 2 smtp
3. 正しい記述
# 正しい smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20
4. 修正後にPostfixをreloadする
$ sudo postfix reload または $ sudo systemctl reload postfix
第二原因:amavisd-newサービスが起動していない対処法
master.cfに問題がなく、postfix reloadしてもwarningが消えない場合、Amavis本体が起動していない可能性があります。1. amavisd-newサービスの状態を確認する
$ sudo systemctl status amavisd または $ sudo systemctl status amavisd-new
2. 停止していたら起動する
$ sudo systemctl start amavisd $ sudo systemctl enable amavisd
3. 10024ポートでリッスンしているか確認する
$ sudo ss -tlnp | grep 10024 LISTEN 0 20 127.0.0.1:10024 0.0.0.0:* users:(("amavisd",pid=12345,fd=5))
/var/spool/postfix/private/ の所有者・パーミッションを確認してください。第三原因:ポート競合・パーミッション異常への対処法
10024ポートを別プロセスが掴んでいたり、ソケットファイルの権限が異常な場合もwarningが出続けます。| 症状 | 確認コマンド | 対処 |
|---|---|---|
| 10024が他プロセスに使われている | ss -tlnp | grep 10024 |
競合プロセスを停止/amavisのポート変更 |
| ソケットの所有者が異常 | ls -l /var/spool/postfix/private/ |
chown postfix:postfix |
| chrootディレクトリ権限 | ls -ld /var/spool/postfix/private |
700から755へ変更(要検証) |
| SELinuxブロック | sudo ausearch -m AVC -ts recent |
setsebool -P antivirus_can_scan_system 1 |
修正後の動作確認手順
原因を特定して対処した後、警告が再発しないことを確認します。確認なしで「直ったつもり」になるのが一番危険で、後日深夜にメールが止まる事故につながります。1. maillogをリアルタイム監視する
$ sudo tail -f /var/log/maillog | grep -E "(warning|smtp-amavis|amavis)"
2. テストメールを送信する
$ echo "test body" | mail -s "amavis test" user@example.com
3. キューに溜まったメールを再送する
# キュー状況確認 $ sudo postqueue -p # 全キュー再送 $ sudo postqueue -f
トラブルシュート・よくある質問
Q. warning が出るがメールは送れている。放置していい?
放置はNGです。Amavis経由のチェックを通っていないメールが直接配送されている状態で、ウイルス・スパム判定をすり抜けています。master.cf の content_filter = smtp-amavis:[127.0.0.1]:10024 の設定と矛盾する挙動なので、即対処してください。Q. master.cfに記述ミスはないのにwarningが出続ける
amavisdが起動していないか、別ポートでリッスンしている可能性が高いです。systemctl status amavisd / ss -tlnp | grep 10024 の順で確認してください。chroot配下のソケットパス(/var/spool/postfix/private/smtp-amavis)の存在も ls -l で直接確認するのが確実です。Q. SELinuxを無効化すれば解決しますか
解決することはありますが推奨しません。ausearch -m AVC -ts recent で具体的なドメイン拒否ログを確認し、必要な setsebool や semanage permissive を限定的に適用するのが安全です。SELinuxを丸ごとpermissiveにすると、別のセキュリティ防御も無効化されます。Q. amavisdの再起動だけで治ったが原因がわからない
ソケット作成失敗の根本原因がログに残らないケースで、メモリリーク・タイムアウト累積などが疑われます。/var/log/messages や journalctl -u amavisd を --since "yesterday" オプションで確認し、再発防止のため定期再起動cronを仕込むのが現実的な対処です。本記事のまとめ
| 原因 | 確認方法 | 対処法 |
|---|---|---|
| master.cf記述ミス | grep smtp-amavis /etc/postfix/master.cf |
正しい記述に修正+reload |
| amavisdサービス停止 | systemctl status amavisd |
systemctl start amavisd |
| 10024ポート競合 | ss -tlnp | grep 10024 |
競合プロセス停止/ポート変更 |
| SELinuxブロック | ausearch -m AVC -ts recent |
該当boolean有効化 |
| ソケット権限異常 | ls -l /var/spool/postfix/private/ |
chown postfix:postfix |
| キュー滞留 | postqueue -p |
postqueue -f |
| 修正後の動作確認 | tail -f /var/log/maillog |
テストメール送信+警告非発生確認 |
このwarningは、出続けたまま放置するとAmavisを経由しないメールが直接配送される状態になります。「メールが届いているから問題ない」と判断せず、ログにwarningが出た時点で必ず原因を特定して対処してください。原因の8割は今回紹介したmaster.cf記述ミスかamavisdサービスダウンの2パターンに収まります。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:/lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルやディレクトリはありません
- 前のページへ:end_request i/o error dev fd0 sector 0エラーが表示された場合の対処法
- この記事の属するカテゴリ:Linuxエラー対処法へ戻る

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