后缀chroot监狱不起作用

试图设置Postfix来运行chroot。 只有一点信息来自man page,它只是说遵循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 env被设置在/ 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 - ny - - local virtual unix - ny - - 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 

主进程不会运行chroot,因为它会派生出所有其他实际执行工作的服务。 检查各种衍生服务的根源(如qmgr)。

chroot(在master.cf中)的目的是限制利用可能造成的损害,而不是用不同的信息集来呈现postfix。 如果你想用一组不同的用户展示postfix,可以看一下http://www.postfix.org/VIRTUAL_README.html或者准备一个完整的chroot来手动启动初始postfix进程。