Postfix/chroot

Aus Foxwiki

Postfix in einer chroot

Postfix wird standardmäßig nicht in ein Chroot-Gefängnis gesteckt.

  • Die Postfix-Dokumentation [1] liefert Details darüber, wie man ein solches Jail bewerkstelligen kann.
  • Die Schritte sind unten beschrieben und basieren auf dem chroot-setup-Skript, das im Postfix-Quellcode bereitgestellt wird.

Gehen Sie zuerst in die master.cfDatei im Verzeichnis /etc/postfixund ändern Sie alle Chroot-Einträge auf 'yes' (y) mit Ausnahme der Dienste qmgr, proxymap, proxywrite, local, und virtual

Erstellen Sie zweitens zwei Funktionen, die uns später beim Kopieren von Dateien in das Chroot-Gefängnis helfen (siehe letzter Schritt).

CP="cp -p"
cond_copy() {
 # Dateien nach Muster in $1 finden
 # Falls vorhanden, in Verzeichnis $2 kopieren
 dir=`dirname "$1"`
 pat=`Basisname "$1"`
 lr=`find "$dir" -maxdepth 1 -name "$pat"`
 wenn testen!  -d "$2" ;  dann Ausfahrt 1 ;  fi
 if test "x$lr" != "x" ;  dann $CP $1 "$2" ;  fi
 }

Erstellen Sie als Nächstes die neuen Verzeichnisse für das Gefängnis:

set -e
umask 022
POSTFIX_DIR=${POSTFIX_DIR-/var/spool/postfix}
cd ${POSTFIX_DIR}
mkdir -p etc lib usr/lib/zoneinfo
test -d /lib64 && mkdir -p lib64

Suchen Sie die localtime-Datei

lt=/etc/localtime
if test ! -f $lt ; then lt=/usr/lib/zoneinfo/localtime ; fi
if test ! -f $lt ; then lt=/usr/share/zoneinfo/localtime ; fi
if test ! -f $lt ; then echo "cannot find localtime" ; exit 1 ; fi
rm -f etc/localtime

Kopieren Sie localtime und einige andere Systemdateien in die Chroots etc

$CP -f $lt /etc/services /etc/resolv.conf /etc/nsswitch.conf usw
$CP -f /etc/host.conf /etc/hosts /etc/passwd usw
ln -s -f /etc/localtime usr/lib/zoneinfo

Stellen Sie sicher, dass resolv.conf root gehört:

chown root /var/spool/postfix/etc/resolv.conf

Kopieren Sie die erforderlichen Bibliotheken mit der zuvor erstellten Funktion in die Chroot cond_copy

cond_copy '/usr/lib/libnss_*.so*' lib
cond_copy '/usr/lib/libresolv.so*' lib
cond_copy '/usr/lib/libdb.so*' lib

Und vergessen Sie nicht, laden Postfix