Zum Inhalt springen

Postfix/chroot: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „[[Kategorie:/“ durch „[[Kategorie:“
K Textersetzung - „ Postfix “ durch „ Postfix
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Postfix in einer chroot ===
=== [[Postfix]] in einer chroot ===
Postfix wird standardmäßig nicht in ein Chroot-Gefängnis gesteckt.
Postfix wird standardmäßig nicht in ein Chroot-Gefängnis gesteckt.
* Die Postfix-Dokumentation [http://www.postfix.org/BASIC_CONFIGURATION_README.html#chroot_setup [1]] liefert Details darüber, wie man ein solches Jail bewerkstelligen kann.
* Die [[Postfix]]-Dokumentation [https://www.postfix.org/BASIC_CONFIGURATION_README.html#chroot_setup [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.
* Die Schritte sind unten beschrieben und basieren auf dem chroot-setup-Skript, das im [[Postfix]]-Quellcode bereitgestellt wird.


Gehen Sie zuerst in die <tt>master.cf</tt>Datei im Verzeichnis <tt>/etc/postfix</tt>und ändern Sie alle Chroot-Einträge auf 'yes' (y) mit Ausnahme der Dienste <tt>qmgr</tt>, <tt>proxymap</tt>, <tt>proxywrite</tt>, <tt>local</tt>, und <tt>virtual</tt>
Gehen Sie zuerst in die <tt>master.cf</tt>Datei im Verzeichnis <tt>/etc/postfix</tt>und ändern Sie alle Chroot-Einträge auf 'yes' (y) mit Ausnahme der Dienste <tt>qmgr</tt>, <tt>proxymap</tt>, <tt>proxywrite</tt>, <tt>local</tt>, und <tt>virtual</tt>
Zeile 10: Zeile 10:


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


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

Aktuelle Version vom 4. Juli 2026, 13:08 Uhr

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