Postfix chroot jail 不起作用

Postfix chroot jail 不起作用

尝试设置 Postfix 以运行 chrooted。手册页中只有一点信息,上面只是说要遵循 master.cf 中的说明。master.cf 是不言自明的,只需在 chroot 列中设置“y”即可。但是,不行,它仍然不起作用。

# pgrep master
12661

# ls -lh /proc/12661/root
lrwxrwxrwx 1 root root 0 Feb 23 22:03 /proc/12661/root -> /

仍然指向我的根!这意味着它仍然从 /etc/passwd 读取用户相关信息(例如 local_recipient_maps),而我不想这样做。我想在 chroot 中使用单独的 passwd 文件。我尝试设置:

local_recipient_maps = $maps
maps=/var/spool/postfix/etc/passwd

但仍然没有结果。它仍然从 /etc/passwd 读取。Chroot
环境设置在 /var/spool/postfix 中,所有需要的文件和库都在那里。

master.cf

smtp      inet  n       -       y       -       -       smtpd
smtpd     pass  -       -       y       -       -       smtpd
pickup    unix  n       -       y       60      1       pickup
cleanup   unix  n       -       y       -       0       cleanup
qmgr      unix  n       -       y       300     1       qmgr
tlsmgr    unix  -       -       y       1000?   1       tlsmgr
rewrite   unix  -       -       y       -       -       trivial-rewrite
bounce    unix  -       -       y       -       0       bounce
defer     unix  -       -       y       -       0       bounce
trace     unix  -       -       y       -       0       bounce
verify    unix  -       -       y       -       1       verify
flush     unix  n       -       y       1000?   0       flush
proxymap  unix  -       -       y       -       -       proxymap
proxywrite unix -       -       y       -       1       proxymap
smtp      unix  -       -       y       -       -       smtp
relay     unix  -       -       y       -       -       smtp
showq     unix  n       -       y       -       -       showq
error     unix  -       -       y       -       -       error
retry     unix  -       -       y       -       -       error
discard   unix  -       -       y       -       -       discard
local     unix  -       n       y       -       -       local
virtual   unix  -       n       y       -       -       virtual
lmtp      unix  -       -       y       -       -       lmtp
anvil     unix  -       -       y       -       1       anvil
scache    unix  -       -       y       -       1       scache

postconf -n

command_directory = /var/spool/postfix/usr/sbin
config_directory = /var/spool/postfix/etc/postfix
daemon_directory = /var/spool/postfix/usr/libexec/postfix
data_directory = /var/spool/postfix/var/lib/postfix
debug_peer_level = 2
default_privs = nobody
header_checks = regexp:/var/spool/postfix/etc/postfix/header_checks
html_directory = no
inet_interfaces = loopback-only
inet_protocols = ipv4
local_recipient_maps = $maps
mail_owner = postfix
mailq_path = /var/spool/postfix/usr/bin/mailq
manpage_directory = /usr/local/man
maps = /var/spool/postfix/etc/passwd
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8
newaliases_path = /var/spool/postfix/usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /var/spool/postfix/etc/postfix
sendmail_path = /var/spool/postfix/usr/sbin/sendmail
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP $mail_name
unknown_local_recipient_reject_code = 550

答案1

主进程不会以 chroot 方式运行,因为它会生成其他所有实际执行工作的服务。检查各种生成的服务的根目录(如 qmgr)。

chroot(在 master.cf 中)的目的是限制可能由漏洞造成的损害,而不是向 postfix 提供不同的信息集。如果您想向 postfix 提供不同的用户集,可以查看http://www.postfix.org/VIRTUAL_README.html或者准备一个完整的 chroot 来手动启动初始 postfix 进程。

相关内容