(Virtualbox – ISPCP – Maia Mailguard)
Beschreibt das Setup eines virtuellen Servers mittels Virtualbox auf einem Rootserver sowie die Installation von ISPCP in Verbindung mit MAIA Mailguard.
Wichtig: Vor einer Änderung an einem laufenden System ist es immer empfehlenswert ein komplettes Backup des Systems zu machen. Der Autor übernimmt keine Haftung durch bei der Anwendung dieses HowTo's entstandene Schäden!
Zunächst brauchen wir Virtualbox. Wegs VRDP und anderen Features habe ich mich für die nicht opensource Variante entschieden. (Die OSE Installation kann gravierend von der folgend beschriebenenen abweichen)
Auf Grund der Downloadroutine war es einfacher das .deb Paket für Virtualbox zunächst lokal zu speichern und dann per securecopy auf den Server zu kopieren.
Download Virtualbox
http://www.virtualbox.org/wiki/Downloads
Virtualbox auf den Server kopieren
scp virtualbox_1.6.2-31466_Ubuntu_hardy_i386.deb root@SERVERIP:/root/
(bei anderem ssh port nach dem scp ein -P 234 einfügen)
Ausserdem brauchen wir ein Image der Ubuntu Installationscd. Wir wechseln also in das root Homeverzeichnis.
cd /root
Ubuntu-Server Image herunterladen
wget http://ftp.uni-kl.de/pub/linux/ubuntu.iso/hardy/ubuntu-8.04.1-server-i386.iso
Virtualbox installieren
dpkg -i virtualbox_1.6.2-31466_Ubuntu_hardy_i386.deb
Eventuelle Paketabhängigkeiten müssen zuerst mittels “apt-get install” gelöst werden.
Beispielpakete:
apt-get -f install psmisc libxt6 libxslt1.1 libxml2 libxcursor1 libx11-6 libsdl1.2debian libqt3-mt libidl0
(Anmerkung: Für das Einrichten einer Bridge oder einer virtuellen Netzwerkkarte muss man die Pakete “bridge-utils ” und “uml-utilities” für #brctl und #tunctl installieren)
Wurde Virtualbox erfolgreich installiert, kann man nun beginnen eine virtuelle Maschine zu erstellen. Unsere nennen wir “office” .
Verzeichnis vorbereiten
mkdir /root/vserveroffice
Virtuelle Maschine im definierten “basefolder” erstellen und registrieren
VBoxManage createvm -name "office" -basefolder /root/vserveroffice -register
Virtuelle Maschine konfigurieren
VBoxManage modifyvm "office" -memory "1500MB" -acpi on -boot1 dvd -nic1 hostif -hostifdev1 tap0 -cableconnected1 on -ostype ubuntu
VDI Image erstellen und registrieren
VBoxManage createvdi -filename /root/vserveroffice/office.vdi -size 50000 -register
(Per Default ist dieses Image dynamisch und wächst bis zu dieser Maximalgrösse heran)
Imagedatei der virtuellen Maschine “office” zuweisen
VBoxManage modifyvm office -hda /root/vserveroffice/office.vdi
Ubuntu Image als DVD an die virtuelle Maschine hängen
VBoxManage registerimage dvd /root/ubuntu-8.04.1-server-i386.iso
(dieses Image sollte man bis zu dem Zeitpunkt an dem man es korrekt “released” an der selben Stelle liegen lassen)
Ubuntu Image einhängen
VBoxManage modifyvm office -dvd /root/ubuntu-8.04.1-server-i386.iso
Virtuelle Maschine starten.
VBoxVRDP --startvm office&
(Achtung! Unkonfiguriert erlaubt der Start mittels VboxVRDP jedem von aussen unverschlüsselten Zugriff auf die virtuelle Maschine)
Man sollte in erwägung ziehen die “authtype” auf external zu stellen um nur am Rootserver existierende Userkonten zuzulassen.
VBoxManage modifyvm office -vrdp on -vrdpauthtype external
Rdesktop lokal installieren
sudo apt-get install rdesktop
(rdesktop dient dazu auf die virtuelle Maschine vom lokalen PC aus zuzugreifen)
Mittels rdesktop auf die virtuelle Maschine zugreifen
rdesktop -a 16 -k de -g 800x600 xxx.xxx.xxx.xxx
(Mit authtype “external”)
rdesktop -a 16 -k de -g 800x600 -u root -p - 85.10.196.19
Man sollte breits bei der Installation darauf achten dass man als Hostname einen FQDN wählt. Einen Namen mit welchem man später auch tatsächlich auf diesen Server über http zugreifen kann.
Zudem sollte man bei der Netzwerkkonfiguration bereits Manuell die entgültige IP des vServers angeben können und während dessen am Mainserver die Konfiguration den virtuellen Devices “tap0” welches nach dem Start der VM existiert vornehmen. Die Installation des LAMP kann an dieser Stelle noch ausgelassen werden.
Virtuelles Netzwerk konfigurieren (auszug aus dem Skript [siehe Anhang])
WANIF="eth0"
WANIFIP="xxx.xxx.xxx.xxx" #IP des rootservers
TAP0="tap0"
TAP0IP="10.0.0.1"
VSERVEROFFICE="10.0.0.100"
#internetforwarding aktivieren
iptables --table nat --append POSTROUTING --out-interface $WANIF -j MASQUERADE
iptables --append FORWARD --in-interface $TAP0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
ifconfig $TAP0 $TAP0IP up
#route einrichten für tap0 device ("office"
bash -c 'echo 1 > /proc/sys/net/ipv4/conf/'$TAP0'/proxy_arp'
route add -host $WANIFIP dev $TAP0
arp -Ds $WANIFIP $WANIF pub
Nach dem Setup wird der reboot nicht durchlaufen da das linux-image-2.6.24-server unter Virtualbox nicht funtktioniert. Man muss nun die virtuelle Maschine neustarten um erneut von der Installationscd zu booten und in den “rescue mode” (Rescue a broken system) wechseln.
Virtuelle Maschine neustarten
VBoxManage controlvm office reset
Nun wählt man sda1 als root filesystem und öffnet eine rootshell und installiert den linux kernel “generic” (die aktuellen Paket namen lassen sich mittels “apt-cache search linux-image” bzw. das installierte Paket mittels “dpkg -l | grep linux-image” herausfinden)
Linux image austauschen
apt-get install linux-image-2.6.24-19-generic
apt-get remove linux-image-2.6.24-19-server
Nun schalten wir die virtuelle Maschine ab um “die DVD aus dem Laufwerk zu nehmen”.
(diese Prozedur hat viele Gesichter)
Virtuelle Maschine abschalten
VBoxManage controlvm office poweroff
DVD-Laufwerk von der virtuellen Maschine abhängen
VBoxManage modifyvm office -dvd none
Ubuntu Image deregistrieren
VBoxManage unregisterimage dvd /root/ubuntu-8.04.1-server-i386.iso
Disk (.vdi Image) als erstes Bootdevice definieren
VBoxManage modifyvm office -boot1 disk
Nun kann die VM erneut gestartet werden. Als erstes sollte man den openssh-server installieren und von nunan per ssh weiterarbeiten.
Ist dies geschehen kann sollte man sofern man bisher unverschlüsselt gearbeitet hat die “authtype” auf external stellen damit anderen der zugang verweigert wird.
VBoxManage modifyvm office -vrdp on -vrdpauthtype external
An dieser Stelle wäre es sinnvoll von der .vdi eine Sicherungskopie anzulegen.
Dein Server muss mit einem auflösbaren FQDN (fully qualified domain name) konfiguriert sein.
Stell sicher dass du mit einem Benutzer mit root-Rechten eingeloggt bist.
Wir gehen davon aus dass bis jetzt kein LAMP am laufen ist und daher auch diese Dienste konfiguriert werden müssen. Falls dies nicht der Fall ist kann es vorkommen, dass der eine oder andere Punkt wegfällt oder ausgelassen werden kann.
apt-get update
apt-get upgrade
apt-get install tar bzip2 wget
mkdir -p /ispcp/
cd /ispcp/
wget http://www.isp-control.net/downloads/snapshots/ispcp-omega-trunk-YYYYMMDD.tar.bz2
tar -xjvf ispcp-omega-trunk-YYYYMMDD.tar.bz2
cd ./web/svn/nightly
apt-get install $(cat ./docs/Ubuntu/ubuntu-packages-hardy)
'New password for the MySQL "root" user'
gutes root passwort für sql zugang eintragen..
'Create directories for web-based administration?'
Bei der Frage zu „courier“ wähle no aus um die Anlegung von Verzeichnissen zur webbasierten Verwaltung zu deaktiviern..
'General type of mail configuration'
Bei den Fragen zu „postfix“ wähle
internet site und als Empfänger von Systemmails
„root“ ein.
Falls dein Ubuntu Setup korrekt ist, sollte der
Domainname für das Mailsystem bereits angezeigt werden. Ist dies
nicht der Fall trage deinen Domainnamen ohne „www.“ in dem
entsprechenden Feld ein.
----------
hetzner-server: xxx-xxx-xxx-xxx.clients.your-server.de
server4you: echo847.server4you.de
'Run proftpd'
Bei
der Frage zu „proftpd“ wähle standalone
als Betriebsmodus
make install
Es wird empfohlen den aktuellen Systemstatus vor diesem Schritt zu sichern. Im Falle eines virtualisierten Images.. Kopie des Image anlegen!!!
Das ist mein voller ernst.. gerade die nightly builds gehn oft nicht durch bei der Installation und ein Neustart des Setups gelingt meist nicht und bricht mit dubiosen Fehlermeldungen ab .. Ispcp kopiert sich an diesem Schritt überall ins System und ist danach kaum mehr wegzubringen.
cp -Rv /tmp/ispcp/* /
cd /var/www/ispcp/engine/setup
(Falls das Kennwort nicht bereits gesetzt wurde ist jetzt der richtige zeitpunkt es zu tun!!)
mysqladmin -u root password DEIN_PASSWORT
perl ./ispcp-setup
Alle Fragen sollten selbsterklärend sein. Falls du nicht weist was du bei einer spezifischen Frage antworten sollst, kannst du gerne im ispCP Forum nachfragen. Der erste Schritt kann auf einem Server an dem keine Maus angesteckt ist schonmal 20 Minuten dauern wenn du wirklich Pech hast.. die Zufallszahlen benötigen Entropie.. sprich.. random Benutzereingaben.. eine zweite Shell aufmachen und dort viel arbeiten, pingen und nach > /dev/urandom umleiten hilft meist - auf einem Vserver jedoch nicht.
Hat man die Keys einmal erstellt so sollte man sich am besten gleich eine Sicherung davon anlegen um für den Fall dass das Setup erneut ausgeführt werden muss diesen Schritt umgehen zu können.
Keys sichern
cd /var/www/
mkdir backup
cd backup
cp ../ispcp/engine/ispcp-db-keys.pl .
cp ../ispcp/gui/include/ispcp-db-keys.php .
cp ../ispcp/gui/tools/pma/config.inc.php .
Keys rückspielen (vor dem ausführen von perl ./ispcp-setup)
cd /var/www/backup/
cp ispcp-db-keys.pl ../ispcp/engine/
cp ispcp-db-keys.pl ../ispcp/engine/messager/
cp ispcp-db-keys.php ../ispcp/gui/include/
cp config.inc.php ../ispcp/gui/tools/pma/
Bei Fehlern empfehle ich die Ticket-Datenbank von ispcp zu durchsuchen (bei nightly builds kann es vorkommen dass man in einer .pl Datei ein oder zwei Zeilen ändern muss damit das Setup durchläuft)
http://isp-control.net/ispcp/search
auf einem Server bei dem der erste Schritt bereits zu lange gedauert hat sollte man vielleicht darauf verzichten die Passwörter für vftp und pma automatisch zu generieren.
rm -fR /tmp/ispcp
Firefox öffnen (opera und konsorten sind auch erlaubt ^^) und mit der im Verlauf des Setups bereits festgelegten Adresse auf denControlpanel zugreifen und als “admin” einloggen.
(http://xxx-xxx-xxx-xxx.clients.your-server.de)
Die Konfiguration von Proftpd insbesondere die proftpd.conf im Verzeichnis /etc/proftpd muss für den Betrieb in einem Vserver hinter NAT angepasst werden. Eine Portrange für passiveftp sowie die externe Ipadresse des root-Servers müssend definiert werden
nano /etc/proftpd/proftpd.conf
PassivePorts 20000 30000
MasqueradeAddress 85.10.196.19
/etc/init.d/proftpd restart
Selbstverständlich muss im nachfolgenden Netzwerksetup (siehe Anhang) diese Portrange auch an den entsprechenden Vserver weitergeleitet werden
Wichtig: Legen Sie bitte von allen Konfigurationsdateien, welche im Folgenden verändert
werden eine Sicherungskopie an. So können Sie bei einer Fehlkonfiguration auf diese
zurückgreifen.
/etc/init.d/postfix stop
apt-get install libossp-uuid-perl libphp-jpgraph razor pyzor libcrypt-openssl-rsa-perl libtemplate-perl subversion bcabextract pax libsqlite0 php5-sqlite php5-gd php5-sqlite smarty
pear upgrade-all
pear install Log Mail_Mime File Date DB DB_Pager Net_Sieve Net_Pop3
pear -d preferred_state=alpha install Image_Color Image_Canvas Image_Graph Numbers_Roman Numbers_Words
pear install Net_SMTP
pear install Net_IMAP
pear install Auth_SASL
pear install Pager
apt-get install amavisd-new spamassassin clamav clamav-daemon
User amavis ein passwort zuweisen
passwd amavis
Gruppenzugehörigkeit erweitern
usermod -G amavis clamav
Spamassassin benutzt automatisch die installierten Spamfilter razor und pyzor, ohne dass eine Konfiguration notwendig ist. Es muss lediglich der Daemon aktiviert werden. Hierzu wird die Datei /etc/default/spamassassin entsprechend angepasst
nano /etc/default/spamassassin
# Change to one to enable spamd
ENABLED=1
mkdir /usr/local/src/maia
cd /usr/local/src/maia
svn checkout https://www.maiamailguard.com/svn/branches/1.0
mkdir /var/lib/amavis/db
mkdir
/var/lib/amavis/maia
mkdir /var/lib/amavis/maia/scripts
cd
/var/lib/amavis/maia/scripts
cp
/usr/local/src/maia/1.0/scripts/* .
cp load-sa-rules.pl 1
cp
process-quarantine.pl 2
cp send-quarantine-digests.pl 3
sed
's/var\/amavisd/var\/lib\/amavis/g' 1 > load-sa-rules.pl
sed
's/var\/amavisd/var\/lib\/amavis/g' 2 > process-quarantine.pl
sed
's/var\/amavisd/var\/lib\/amavis/g' 3 >
send-quarantine-digests.pl
rm 1 2 3
test
-e /etc/maia.conf && cp /etc/maia.conf
/etc/maia.conf-backup
cp /usr/local/src/maia/1.0/maia.conf.dist
/etc/maia.temp
sed 's/var\/amavisd/var\/lib\/amavis/g'
/etc/maia.temp > /etc/maia.conf
cp -r
/usr/local/src/maia/1.0/templates /var/lib/amavis/maia/templates
chown
-R amavis:amavis /var/lib/amavis
chmod -R 750
/var/lib/amavis
chmod 640 /var/lib/amavis/maia/templates/*.tpl
nano /etc/maia.conf
(folgende Werte anpassen)
# Your Maia database user's password
$password = "youramavisuserpassword";
# Base URL to Maia's PHP scripts
$base_url = "http://admin.your-server.de/tools/antispam";
mysql -u root -p mysql
CREATE DATABASE maia;
quit
mysql -u root -p maia < /opt/sources/maia-1.0.2/maia-mysql.sql
quit
mysql -u root -p maia
GRANT CREATE, DROP, ALTER, SELECT, INSERT, UPDATE, DELETE ON maia.* TO amavis@localhost IDENTIFIED BY 'youramavisuserpassword';
quit
Konfiguration
überprüfen...
cd /var/lib/amavis/maia/scripts/
./configtest.pl
Application/Module Version Status
========================================================================
Perl : 5.8.8 : OK
file(1) : 4.21 : OK
Archive::Tar : 1.36 : OK
Archive::Zip : 1.18 : OK
BerkeleyDB : 0.32 : OK
Compress::Zlib : 2.008 : OK
Convert::TNEF : 0.17 : OK
Convert::UUlib : 1.09 : OK
Crypt::Blowfish : 2.10 : OK
Crypt::CBC : 2.24 : OK
Crypt::OpenSSL::RSA : 0.24 : OK
Data::UUID : 1.0501 : OK
DB_File : 1.814 : OK
DBD::mysql : 4.005 : OK
DBD::Pg : 1.49 : OK
DBI : 1.601 : OK
Digest::MD5 : 2.36 : OK
Digest::SHA1 : 2.11 : OK
File::Spec : 3.12 : OK
HTML::Parser : 3.56 : OK
HTTP::Date : 1.47 : OK
IO::Stringy : 2.110 : OK
IO::Zlib : 1.04 : OK
IP::Country : N/A : NOT INSTALLED (SpamAssassin's optional RelayCountry plugin requires this)
LWP::UserAgent : 2.036 : OK
Mail::Address : 2.02 : OK
Mail::DomainKeys : N/A : NOT INSTALLED (SpamAssassin's optional DomainKeys plugin requires this)
Mail::Internet : 2.02 : OK
Mail::SpamAssassin : 3.2.4 : OK
Mail::SPF::Query : N/A : NOT INSTALLED (SpamAssassin's optional SPF plugin requires this)
MIME::Base64 : 3.07 : OK
MIME::Parser : 5.425 : OK
MIME::QuotedPrint : 3.07 : OK
Net::CIDR::Lite : N/A : NOT INSTALLED (SpamAssassin's optional SPF plugin requires this)
Net::DNS : 0.63 : OK
Net::Server : 0.97 : OK
Net::SMTP : 2.29 : OK
Pod::Usage : 1.33 : OK
Template : 2.19 : OK
Time::HiRes : 1.86 : OK
Unix::Syslog : 1.0 : OK
URI : 1.35 : OK
Database DSN test : PASSED
Optionale plugins können vernachlässigt werden..
Copy SpamAssassin's rules to the MySQL database
(stellen sie sicher dass 'spamassassin --lint' keine Fehler zurückgibt; korrigieren sie eventuelle Fehler bevor sie fortsetzen)
spamassassin
--lint
su amavis -c 'spamassassin --lint'
sa-update --nogpg
cd /var/lib/amavis/maia/scripts
./load-sa-rules.pl
(Sie sollten eine Menge Regeln angezeigt bekommen die geladen werden. Falls es damit Probleme gibt überprüfen sie ob das Skript auch zu den korreten Ordnern zeigt).
Copy the web interface files to the web site.
mkdir /var/www/ispcp/gui/tools/antispam
cp -r /usr/local/src/maia/1.0/php/* /var/www/ispcp/gui/tools/antispam
cd /var/www/ispcp/gui/tools/antispam
cp config.php.dist config.php
folgende Werte in der “config.php” anpassen:
nano config.php
$maia_sql_dsn = "mysql://amavis:passwd@tcp(localhost:3306)/maia";
#passwd durch das Passwort des Users amavis ersetzen
$address_rewriting_type = 4;
$auth_method = "pop3";
$smarty_path = "/var/www/ispcp/gui/tools/antispam/libs/Smarty";
cd /opt/sources/
wget http://www.smarty.net/do_download.php?download_file=Smarty-2.6.19.tar.gz
tar -xzvf Smarty-2.6.19.tar.gz
cd Smarty-2.6.19/libs
mkdir /var/www/ispcp/gui/tools/antispam/libs/Smarty
cp -R ./* /var/www/ispcp/gui/tools/antispam/libs/Smarty
cd /opt/sources/
wget http://ratsnet.org/vhcs/maia_vhcs_theme_v2.12.tar.bz2
tar -xjvf maia_vhcs_theme_v2.12.tar.bz2
mkdir /var/www/ispcp/gui/tools/antispam/themes/modern_blue
cp -R /opt/sources/modern_blue/* /var/www/ispcp/gui/tools/antispam/themes/modern_blue
rechte setzen
chown -R vu2000:www-data /var/www/ispcp/gui/tools/antispam
chmod -R 555 /var/www/ispcp/gui/tools/antispam
chmod -R 755 /var/www/ispcp/gui/tools/antispam/themes
chgrp amavis /var/www/ispcp/gui/tools/antispam/themes/*/compiled
chmod 775 /var/www/ispcp/gui/tools/antispam/themes/*/compiled
gpasswd -a www-data amavis
php.ini bearbeiten
nano /var/www/fcgi/master/php5/php.ini
folgende Zeilen hinzufügen bzw. auskommentieren
extension=mysql.so
extension=gd.so
cd
/etc/amavis
wget
http://www200.pair.com/mecham/amavisd.conf.maia
mv
amavisd.conf.maia amavisd.conf-maia
nano /etc/amavis/amavisd.conf-maia
First, change '$mydomain' and '$myhostname' to yours. Then search for these entries:
$ final_virus_destiny = D_DISCARD;
$ final_spam_destiny = D_DISCARD;
$ final_banned_destiny = D_DISCARD;
$ final_bad_header_destiny = D_DISCARD;
and add this text block after it:
$ warnvirussender = 1;
$ warnspamsender = 0;
$ warnbannedsender = 1;
$ warnvirusrecip = 1;
$ warnbannedrecip = 1;
search for this line and enter a new AMaVis password
lookup_sql_dsn = ( ['DBI:mysql:maia:localhost', 'amavis', '_YOUR_PASS_'] );
and after
$ X_HEADER_TAG = 'X-Virus-Scanned';
$ X_HEADER_LINE = "Maia Mailguard 1.0.2";
copy these lines
use DBI;
my $db = "ispcp";
my $user="root"; # Type here your ispCP MySQL User
# (is the same you typed during the setup)
my $host="localhost";
my $password="_YOUR_PASS"; # Type here your ispCP MySQL Password
#(is the same you typed during the setup)
my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host", $user, $password, {RaiseError => 1});
my $arr = $dbh->selectcol_arrayref('SELECT domain_name, 1 FROM domain', {Columns=>[1,2]});
my $arre = $dbh->selectcol_arrayref('SELECT alias_name, 1 FROM domain_aliasses', {Columns=>[1,2]});
my $lis = ($arre,$arr);
%local_domains = (@$arr,@$arre);
Maia dateien über amavis-new kopieren
amavisd-new stop
cp
/usr/local/src/maia/1.0/amavisd-maia /usr/sbin/amavisd-new-maia
cp
/usr/sbin/amavisd-new-maia /usr/sbin/amavisd-new
cp
/etc/amavis/amavisd.conf-maia /etc/amavis/amavisd.conf
chown root /usr/sbin/amavisd-new
chmod 755 /usr/sbin/amavisd-new
Danach starten sie amavisd-new (Maia) (beim allerersten mal empfiehlt sich maia mit 'amavisd-new debug' zu starten um eventuelle Fehler erkennen zu können):
amavisd-new
start
Wichtig: einige Zeilen können schon vorhanden sein und müssen nur auskommentiert werden.
Der Rest muss hinzugefügt werden!
Zur Integration von Amavis in Postfix muss in der Datei /etc/postfix/main.cf folgende Zeile eingefügt werden:
nano /etc/postfix/main.cf
content_filter=smtp-amavis:[127.0.0.1]:10024
Weitere Anpassungen sind in der Datei /etc/postfix/master.cf erforderlich. Am Ende:
nano /etc/postfix/master.cf
smtp-amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
Unmittelbar hinter der Zeile mit dem Dienst pickup (relativ am Beginn der Datei) einfügen:
-o content_filter=
-o receive_override_options=no_header_body_checks
Nun noch ans Ende der Datei folgende Zeilen hängen:
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
cp /etc/passwd /var/spool/postfix/etc/passwd
postfix reload
cd /etc/apache2/sites-available/
nano 00_master.conf
nach
Alias /ftp /var/www/ispcp/gui/tools/filemanger/
folgendes einfügen:
Alias /antispam /var/www/ispcp/gui/tools/antispam/
apache neu starten
/etc/init.d/apache2 restart
Patch Image graph (maia wird die änderung dennoch nicht anzeigen)
cd /usr/share/php/Image/Graph/Plot/
mv Pie.php Pie.php.orig
wget http://www200.pair.com/mecham/Pie.php.txt
mv Pie.php.txt Pie.php
PHP5 patch to a Net_IMAP file:
cd
/usr/share/php/Net/
cp IMAPProtocol.php IMAPProtocol-orig.php
wget http://www200.pair.com/mecham/spam/IMAPProtocol.php.patch.txt
patch IMAPProtocol.php < IMAPProtocol.php.patch.txt
nun kann man die installation testen
http://admin.yourserver.tld/tools/antispam/admin/configtest.php
Does not need a OK:
PostgreSQL Support
PEAR::Net_IMAP
IMAP library
LDAP library
MCrypt library
Eventuelle “basedir restrictions” kann man beheben – scheinen aber nur für die Funtkionalität der Testseite relevant zu sein.
update-rc.d -f mysql remove
update-rc.d mysql start 18 2 3 4 5 . stop 22 0 1 6 .
Please create a config with the generator at http://www.yrex.com/spam/spamconfig.php and save it under ”/etc/spamassassin/local.cf”
nano /etc/spamassassin/local.cf
# Bayes database configuration
use_bayes 1
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:maia:localhost
nano
bayes_sql_username amavis
bayes_sql_password _YOUR_AMaViS_PASS_ # <-- change '_YOUR_AMaViS_PASS_ to your Pass
bayes_sql_override_username amavis
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 10.0
bayes_use_hapaxes 1
#bayes_use_chi2_combining 1
bayes_ignore_header ReSent-Date
bayes_ignore_header ReSent-From
bayes_ignore_header ReSent-Message-ID
bayes_ignore_header ReSent-Subject
bayes_ignore_header ReSent-To
bayes_ignore_header Resent-Date
bayes_ignore_header Resent-From
bayes_ignore_header Resent-Message-ID
bayes_ignore_header Resent-Subject
bayes_ignore_header Resent-To
bayes_ignore_header X-Received-From-IP
bayes_ignore_header X-Virus-Scanned
bayes_ignore_header X-Spam-Status
bayes_ignore_header X-Spam-Level
bayes_ignore_header X-Sender
bayes_ignore_header X-Mailer
# Auto-Whitelist configuration
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:maia:localhost
user_awl_sql_username amavis
user_awl_sql_password _YOUR_AMaViS_PASS_ # <-- change '_YOUR_AMaVis_PASS_ to your Pass
ln -s /etc/amavis/amavisd.conf /etc/amavisd.conf
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart
/etc/init.d/postfix restart
Ein kleines Beispielscript welches man am root server dazu nutzen könnte die Netzwerkeinstellungen durchzuführen. Vorsicht: Dieses Skript ist nicht einsatzbereit und soll lediglich an Basisidee für die Konfiguration dienen. Die einzelnen Adressen, Ports und Devicenamen müssen selbstredend angepasst werden.
virtual.net.sh
#!/bin/bash
### BEGIN INIT INFO
# Provides: packet filter rules
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start virtual.net
### END INIT INFO
##--------------------Variablen setzen--------------------##
TAP0="tapX" #virtuelles device für vserver office
TAP1="tapY" #virtuelles device für vserver playground
WANIF="ethX" #externes device
WANIFIP="xxx.xxx.xxx.xxx" #wan ip des root servers
BR0="brX" #bridge
BR0IP="10.0.0.x"
VSERVEROFFICE="10.0.0.y"
VSERVERPLAYGROUND="10.0.0.z"
DNS1="uxx.xxx.xxx.xxu" #dns server
DNS2="vxx.xxx.xxx.xxv"
DNS3="wxx.xxx.xxx.xxw"
#dns function schreibt dns server in /etc/resolv.conf
dns() {
echo "nameserver $DNS1
nameserver $DNS2
nameserver $DNS3" > /tmp/resolv.conf #nameserver setzen
cp /tmp/resolv.conf /etc/resolv.conf
}
case $1 in
start)
echo "Starting virtual.net"
dns #funktion ausfuehren
#vserer office starten
exec VBoxVRDP --startvm office&
exec VBoxVRDP --startvm playground&
sleep 5 #pause um sicherzugehn dass die virtuellen devices bereits erstellt wurden
brctl addbr $BR0 #add bridge
ifconfig $BR0 0.0.0.0 promisc up #devices in promiscious mode schalten
ifconfig $TAP0 0.0.0.0 promisc up
ifconfig $TAP1 0.0.0.0 promisc up
brctl addif $BR0 $TAP0 #add virtual devices on bridge
brctl addif $BR0 $TAP1
ifconfig $BR0 $BR0IP #configure bridge
# WAN zum vServer
iptables --table nat --append POSTROUTING --out-interface $WANIF -j MASQUERADE
iptables --append FORWARD --in-interface $BR0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
# WAN vom vServer
bash -c 'echo 1 > /proc/sys/net/ipv4/conf/'$BR0'/proxy_arp'
route add -host $WANIFIP dev $BR0
arp -Ds $WANIFIP $WANIF pub
###--------PORT Weiterleitung--------###
###----------------------------------###
###----------office vserver----------###
#port 80 an "office" weiterrouten
iptables -t nat -A PREROUTING -i $WANIF -p tcp --dport 80 -j DNAT --to $VSERVEROFFICE
#port 21 ftp
iptables -t nat -A PREROUTING -i $WANIF -p tcp --dport 21 -j DNAT --to $VSERVEROFFICE
iptables -A FORWARD -i $WANIF -p tcp --dport 21 -j ACCEPT
#port 20 ftp
iptables -t nat -A PREROUTING -i $WANIF -p tcp --dport 21 -j DNAT --to $VSERVEROFFICE
iptables -A FORWARD -i $WANIF -p tcp --dport 21 -j ACCEPT
#portrange 20000:30000 für passivFTP hinter NAT
iptables -t nat -A PREROUTING -i $WANIF -p tcp -m multiport --dports 20000:30000 -j DNAT --to $VSERVEROFFICE
###----------playground vserver----------###
#port 1234 test
iptables -t nat -A PREROUTING -i $WANIF -p tcp --dport 1234 -j DNAT --to $VSERVERPLAYGROUND
iptables -A FORWARD -i $WANIF -p tcp --dport 1234 -j ACCEPT
;;
########################
stop)
echo "Stopping VirtualNET"
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -t nat -F
iptables -X
################ Routing aus
echo 0 > /proc/sys/net/ipv4/ip_forward
ifconfig $BR0 down
brctl delif $BR0 $TAP0
brctl delif $BR0 $TAP1
brctl delbr $BR0
;;
status)
echo "Die gesetzten Iptables regeln: "
iptables -L -v
iptables -v -t nat -L POSTROUTING
iptables -v -t nat -L PREROUTING
;;
*)
echo "Usage: $0 [start|stop|status]"
exit 1
;;
esac