2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

fatal: unknown service: smtp/tcp!

現象:

メールログに以下のようなワーニングが出てPostfixが起動しない。

Jul 24 18:04:43 gw4 postfix/pickup[6566]: 267F28B4E8: uid=0 from=<root>
Jul 24 18:04:43 gw4 postfix/cleanup[6571]: 267F28B4E8: message-id=<20060724090443.267F28B4E8@gw4.xxxxxxxxxxxxx.co.jp>
Jul 24 18:04:43 gw4 postfix/qmgr[6567]: 267F28B4E8: from=<root@gw4.xxxxxxxxxxxxx.co.jp>, size=329, nrcpt=1 (queue active)
Jul 24 18:04:43 gw4 postfix/smtp[6573]: fatal: unknown service: smtp/tcp
Jul 24 18:04:44 gw4 postfix/qmgr[6567]: warning: premature end-of-input on private/smtp socket while reading input attribute name
Jul 24 18:04:44 gw4 postfix/qmgr[6567]: warning: private/smtp socket: malformed response
Jul 24 18:04:44 gw4 postfix/qmgr[6567]: warning: transport smtp failure — see a previous warning/fatal/panic logfile record for the problem description
Jul 24 18:04:44 gw4 postfix/master[6565]: warning: process /usr/lib/postfix/smtp pid 6573 exit status 1
Jul 24 18:04:44 gw4 postfix/master[6565]: warning: /usr/lib/postfix/smtp: bad command startup –throttling

1.エラーの原因

この中で “fatal: unknown service: smtp/tcp” が意味するのは?
Postfix /etc/postfix/master.cf ファイルが Postfix SMTP クライアントが chroot 環境内で動くことを表している。しかし、このモードでの操作に必要なファイルが /var/spool/postfix 以下にインストールされていない。chroot 操作はシステムへの侵入者に対する重要な壁を作る。最近は、セキュリティを考えてchroot内(砂場)で動くサービスが多くなってきた。


2.対策

2つの対策がある。
1) chrootを使用禁止にする
/etc/postfix/master.cf で chroot を使用できなくする(そして終わったら postfix reload を送ります)。
2) chrootで動かすようにする
chroot 操作に必要なファイルをインストールする。方法は配布ソースコードの examples/chroot-setup ディレクトリ内にある。

今回は、1)の方法で対策した。
以下のように、master.cfファイルのsmtpセクションのchrootを n にすればよい。修正後、postfixをreloadする。

# vi /etc/postfix/master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp    inet     n     -    n    -    -     smtpd
#submission inet n – – – – smtpd
# -o smtpd_etrn_restrictions=reject
#628 inet n – – – – qmqpd
pickup   fifo     n     -    -    60    1    pickup
cleanup  unix    n     -    –    -     0    cleanup
qmgr    fifo     n     -    -   300    1    qmgr
#qmgr fifo n – – 300 1 oqmgr
rewrite   unix    -     -    -    -     -    trivial-rewrite
bounce   unix    -     -    -    -     0    bounce
defer    unix    -     -    -    -     0    bounce
trace    unix    -     -    -    -     0    bounce
verify    unix    -     -    -    -     1    verify
flush    unix    n     -    -   1000    0    flush
proxymap unix    -     -    n    -     -    proxymap
smtp    unix    -     -    n    -     -    smtp
relay unix – – – – – smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq   unix    n     -    -    -     -    showq
error    unix    -     -    -    -     -    error
local    unix    -     n    n    -     -    local
virtual   unix    -     n    n    -     –    virtual
lmtp    unix    -     -    n    -     -    lmtp
anvil    unix    -     -    n    -     1    anvil

以上

コメント