Der Satz "Nobody is perfect" trifft leider auch auf mich zu, und so haben sich trotz sorgfältiger Prüfung kleinere Fehler eingeschlichen, die ich nachfolgend korrigieren möchte. Für entstandene Unannehmlichkeiten entschuldige ich mich natürlich.

3.3 Die Verzeichnisstruktur von FreeBSD, S. 25

In der Beschreibung des Inhalts des Verzeichnisses /bin hat sich ein Fehler eingeschlichen. Der Satz muss korrekterweise lauten:

"In diesem Verzeichnis liegen Systemprogramme, die von allen Benutzern und natürlich von root ausgeführt werden können, beispielsweise das Programm zum Kopieren von Dateien und Verzeichnissen: cp."

3.8 Zeitsynchronisation per NTP, S. 35

Vor den Namen der Zeitserver fehlt ein Leerzeichen. Der Inhalt der Datei

/usr/local/etc/ntpd.conf

muss daher wie folgt aussehen:

listen on 127.0.0.1
server 0.de.pool.ntp.org
server 1.de.pool.ntp.org
server 2.de.pool.ntp.org
server 3.de.pool.ntp.org

7.2.1 Der Firewall-Airbag, S. 58

Die Crontab-Zeile am Ende der Seite ist falsch. Da wir hier eine benutzerspezifische Crontab bearbeiten, wird die Spalte 6 (hier: root) nicht mit dem Benutzernamen sondern bereits mit dem Befehl gefüllt. Korrekterweise muss die Zeile daher wie folgt lauten (Danke an Jens H. für den Hinweis):

*/5   *   *   *   *   /sbin/pfctl -d

7.2.4 Eine Beispielkonfiguration, S. 61

Die letzten beiden Regelsätze in der Beispiel pf-Konfiguration sind doppelt. In der pf.conf, die hier zum Download bereitgestellt ist, wurde der Fehler behoben:

pass in on $if inet proto icmp all icmp-type $icmp_types keep state
pass in on $if inet proto udp from any to any port 33433 >< 33626 keep state

8.2.3 FreeBSD-Quellcode auschecken, S. 75

Der erste Kopierbefehl enthält einen Fehler. Und zwar wird die Datei /etc/standard-supfile erstellt, im Folgenden wird allerdings auf die Datei /etc/source-supfile Bezug genommen. Der Befehl muss daher korrekterweise lauten:

# cp /usr/share/examples/cvsup/standard-supfile /etc/source-supfile

9.2.1 nginx, S. 99

In der nginx-Konfiguration nutzen wir das nginx-Modul "aio" für asynchrone Systemaufrufe. Um aio nutzen zu können, muss das Kernelmodul auf dem Host ebenfalls geladen sein, sonst kommt es zu Fehlermeldungen in den nginx-Logdateien.

Das Kernelmodul kann auf dem Host (ausserhalb der Jail) mit folgendem Befehl geladen werden:

# kldload aio

Soll das Modul bei jedem Systemstart automatisch geladen werden, müssen Sie folgende Zeile in die Datei /boot/loader.conf einfügen:

aio_load="YES"

Anschliessend muss nginx neu gestartet werden.

9.2.2.5 PHP 5-Prozesse konfigurieren und starten, S. 116/117

Die Standard-Konfiguration von PHP-FPM (php-fpm.conf) beinhaltet bereits einen Pool mit dem Namen WWW. Dieser ist auf Port 9000 konfiguriert und führt beim Hinzufügen des abgedruckten Pools zu folgender Fehlermeldung:

ERROR: unable to bind listening socket for address '10.0.0.2:9000': Address already in use (48)

Demnach bitte darauf achten, dass entweder der Pool WWW verwendet wird, die zugehörigen Parameter kommentiert werden oder der Port des Pools example_com auf bspw. 9001 geändert wird. Siehe hierzu auch die entsprechende Meldung im Server Support Forum.

In der Beispielkonfiguration "example_com.conf" hat sich in der letzten Zeile ein Fehler eingeschlichen (Danke an Nicola T.). Und zwar wird hier als Session-Savehandler "file" angegeben. Korrekterweise muss es für ein Speichern der Sessions in Dateien "files" heissen.

Korrekt lautet die Zeile demnach wie folgt:

php_admin_value[session.save_handler] = files

9.4.2.4 Mailserver mit IMAP und POP3, S. 137

Hierbei handelt es sich nicht um einen Fehler, sondern um eine Änderung in Postfix 2.10. Und zwar wurde eine neue "Restriction" eingeführt, smtpd_relay_restrictions. Diese regelt die Nutzung von Postfix als Relay.

Folgende Zeilen müssen daher zusätzlich in die /usr/local/etc/postfix/main.cf eingefügt werden:

smtpd_relay_restrictions =
     permit_mynetworks, 
     permit_sasl_authenticated, 
     defer_unauth_destination

Die Downloads zum Buch wurden bereits angepasst.

Danke an Jan-Dirk K. für diesen Hinweis.

9.4.8.2 Spam-Filter und Virenscanner per DSPAM integrieren, S. 162

Auf Seite 162 hat sich ein Fehler in den Cronjob eingeschlichen. Wir legen die Datei dspam_purge.sh im Verzeichnis /usr/local/bin/ an. Im Cronjob wurde fälschlicherweise auf das Verzeichnis /usr/local/etc/ verwiesen:

0   0   *   *   *   root   /usr/local/bin/dspam_purge.sh

Danke für den Hinweis von Andreas H.

9.8.1 Öffentliche Freigaben, S. 195

Hinter der ersten Zeile des Konfigurationsbeispiels hat sich ein überflüssiges Fragezeichen ("?") eingeschlichen. Dieses ist überflüssig und führt zu Syntaxfehlern beim Start von Samba.

Korrekt lautet der Abschnitt wie folgt:

[PUBLIC]
comment = "PUBLIC-Freigabe"
path = /samba/public
writable = no
browseable = yes
user = BENUTZERNAME1
write list = BENUTZERNAME1, BENUTZERNAME2
locking = no
guest ok = yes
create mode = 0644
directory mode = 0755
public = yes

9.8.2 Geschützte Freigaben, S. 195

Hinter der ersten Zeile des Konfigurationsbeispiels hat sich ein überflüssiges Fragezeichen ("?") eingeschlichen. Dieses ist überflüssig und führt zu Syntaxfehlern beim Start von Samba.

Korrekt lautet der Abschnitt wie folgt:

[PRIVATE]
comment = "PRIVATE-Freigabe"
path = /samba/private
writable = no
browseable = no
valid users = BENUTZERNAME1
locking = no
guest ok = no
create mode = 0600
directory mode = 0700
public = no

9.4.9.2 Die Syntax von Sieve, S. 175

Hinter der zweiten Zeile des Beispielskripts fehlt eine schliessende Klammer ")".

Korrekt lautet das Beispiel wie folgt:

require ["reject", "fileinto"];
if allof ( size :over 3M, not header :matches "Subject" "[SPAM]*" ) 
{
   reject "Bitte keine E-Mails mit einem Anhang > 3 MB.";
   stop; 
}

if header :matches "Subject" "[SPAM]*" 
{
   fileinto "Junk";
   stop; 
}