warning: connect to transport private/smtp-amavis: No such file or directoryの対処法|master.cfタイポ・amavisdサービス停止・SELinuxの切り分け

HOMEリナックスマスター.JP 公式ブログLinuxエラー対処法 > warning: connect to transport private/smtp-amavis: No such file or directoryの対処法|master.cfタイポ・amavisdサービス停止・SELinuxの切り分け
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「Postfixのmaillogに警告が出てメールが滞留している」
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点セット

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

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

行頭の1文字欠落は、エディタでの編集中に意図せずバックスペースを押してしまったり、コピーペースト時に1文字漏れたりすることで発生します。本人が気づかない内に編集してしまうケースが多いので、master.cfをsvn/git管理しておくと差分が一目でわかって便利です。

第二原因: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))

amavisdが10024でリッスンしているのに、それでもsmtp-amavisソケットがPostfix側に作られていない場合は、Postfixのchroot設定が原因の可能性があります。/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.cfcontent_filter = smtp-amavis:[127.0.0.1]:10024 の設定と矛盾する挙動なので、即対処してください。

Q. master.cfに記述ミスはないのにwarningが出続ける

amavisdが起動していないか、別ポートでリッスンしている可能性が高いです。systemctl status amavisdss -tlnp | grep 10024 の順で確認してください。chroot配下のソケットパス(/var/spool/postfix/private/smtp-amavis)の存在も ls -l で直接確認するのが確実です。

Q. SELinuxを無効化すれば解決しますか

解決することはありますが推奨しません。ausearch -m AVC -ts recent で具体的なドメイン拒否ログを確認し、必要な setseboolsemanage permissive を限定的に適用するのが安全です。SELinuxを丸ごとpermissiveにすると、別のセキュリティ防御も無効化されます。

Q. amavisdの再起動だけで治ったが原因がわからない

ソケット作成失敗の根本原因がログに残らないケースで、メモリリーク・タイムアウト累積などが疑われます。/var/log/messagesjournalctl -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パターンに収まります。

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

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

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

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

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

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

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

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

この記事を書いた人

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

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

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


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