Попытка настроить Postfix для запуска chrooted. Только небольшая информация об этом поступает из справочной страницы, на которой просто говорится, что нужно следовать инструкциям в master.cf. master.cf не требует пояснений, просто установите y в столбце chroot. НО НЕТ, это все равно не работает.
# pgrep master
12661
# ls -lh /proc/12661/root
lrwxrwxrwx 1 root root 0 Feb 23 22:03 /proc/12661/root -> /
Еще указывает на мой корень! Это означает, что он по-прежнему считывает информацию, связанную с пользователем (например, local_recipient_maps) из / etc / passwd, чего я не хочу. Я хочу использовать отдельный файл passwd в chroot. Я пробовал установить:
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 - 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
Главный процесс не будет работать в режиме chrooted, поскольку он порождает все остальные службы, которые фактически выполняют эту работу. Проверьте корни различных порожденных сервисов (например, qmgr).
Цель chroot (в master.cf) - ограничить ущерб, который может быть вызван эксплойтом, а не предоставлять постфиксу другой набор информации. Если вы хотите представить postfix другому набору пользователей, возможно, посмотрите http://www.postfix.org/VIRTUAL_README.html или, возможно, подготовить полный chroot для запуска начального процесса postfix вручную.