Inhaltsverzeichnis
Postfix AMaViS myAmavis installieren
myAmavis ist ein Web-Frontend für AMaViS-new.
WICHTIG - Voraussetzung ist, das AMaViS bereits für die MySQL-Unterstützung konfiguriert ist!
Postfix AMaViS myAmavis herunterladen
Bevor mit der Installation von myAmavis begonnen werden kann, sollte die „aktuelle“ Version von myAmavis heruntergeladen werden.
Die hier verwendete und besprochene Version ist die Version myAmavis-0.2.tar.gz
.
Postfix AMaViS myAmavis installieren
Nach dem herunterladen einer Version von myAmavis in z.B. das Verzeichnis /tmp
auf den lokalen Rechner, sollte sich folgende Datei
myAmavis-0.2.tar.gz
im Verzeichnis /tmp
befinden.
Das heruntergeladene Archiv mit dem Namen myAmavis-0.2.tar.gz
kann mit folgendem Befehl entpackt werden:
$ tar xvfz myAmavis-0.2.tar.gz
Anschließend sollte sich ein Verzeichnis mit dem Namen myAmavis-0.2.tar.gz
im Verzeichnis /tmp
befinden:
# ll /tmp/ ... drwxr-xr-x 5 1004 users 4096 Feb 18 2008 myAmavis-0.2 -rw-r--r-- 1 root root 31759 Feb 18 2008 myAmavis-0.2.tar.gz ...
Abschliessend kann das heruntergeladene Archiv myAmavis-0.2.tar.gz
mit folgendem Befehl gelöscht werden:
$ rm /tmp/myAmavis-0.2.tar.gz
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root
zu werden geben Sie bitte folgenden Befehl ein:
$ su - Password:
Postfix AMaViS myAmavis Konfiguration Webserver
Hier soll die Konfiguration eines virtuellen Host für den Apache HTTP Server beschrieben werden. Der Aufruf von myAmavis soll über die URL
ermöglicht werden.
Falls Sie noch keine Erfahrungen mit virtuellen Hosts in Verbindung mit dem Apache HTTP Server haben sollten, lesen Sie bitte die Dokumentation des Apache HTTP Server Projektes, da hier nur die grundlegenden Schritte erläutert werden.
Falls noch nicht geschehen wird im Verzeichnis /etc/httpd/conf.d
eine Datei mit dem Namen vhosts.conf
erstellt. Der Inhalt dieser Datei sollte minimal für einen virtuellen Host für myAmavis wie folgt aussehen:
# This configuration file enables the vhosts to this # Server # NameVirtualHost *:80 # # myamavis.tachtler.net # <VirtualHost *:80> ServerAdmin webmaster@tachtler.net ServerName myamavis.tachtler.net ServerAlias www.myamavis.tachtler.net ServerPath / DocumentRoot "/var/www/html/myamavis" <Directory "/var/www/html/myamavis"> AllowOverride AuthConfig Order allow,deny Allow from all </Directory> DirectoryIndex index.php ErrorLog logs/myamavis_error.log CustomLog logs/myamavis_access.log combined </VirtualHost>
Anschließend wird das Verzeichnis /tmp/myAmavis-0.2/htdocs
nach /var/www/html/myamavis
mit folgendem Befehl kopiert und gleichzeitig umbenannt:
# mv /tmp/myAmavis-0.2/htdocs /var/www/html/myamavis
Die Besitzrechte für das Verzeichnis /var/www/html/myamavis
müssen noch korrigiert werden, was mit folgendem Befehl durchgeführt wird:
# chown -R root.apache /var/www/html/myamavis
Die Zugriffsrechte müssen ebenfalls noch für das Verzeichnis /var/www/html/myamavis
noch korrigiert werden, was mit folgenden Befehlen durchgeführt wird:
# chmod -R o-rx /var/www/html/myamavis
Ein erneuter oder erster Start des Apache HTTP Server mit folgenden Befehl für eine erstmaligen Start
# service httpd start
oder einen erneuten Start des Apache HTTP Server mit folgendem Befehl
# service httpd restart
macht die oben beschriebenen Konfigurationen für den Apache HTTP Server wirksam.
WICHTIG - Im Verzeichnis /var/www/html/myamavis
befindet sich eine Standard .htaccess-Datei, welche den apache
gegen
- IMAP -
mod_auth_imap
- vorausgesetzt oder - eine lokale Passwortdatei autehtifiziert.
WICHTIG - Standardmäßig ist das apache
-Modul mod_auth_imap
NICHT verfügbar, so das hier evtl. auf die .htaccess-Datei verzichtet, oder die Möglichkeit gegen eine lokale Passwort-Datei zu authentifizieren, genutzt werden sollte.
Wie eine lokale Passwortdatei erzeigt werden kann zeigen folgende Schritte.
Um die Passwortdatei /var/www/html/myamavis/htpasswd.users
anzulegen und einen Benutzer mit Namen amavisuser
und einem dazugehörigen Passwort anzulegen, sind folgende Schritte notwendig:
# htpasswd -c /var/www/html/myamavis/htpasswd.users amavisuser New password: Re-type new password: Adding password for user amavisuser
Der Inhalt der Passwortdatei /var/www/html/myamavis/htpasswd.users
kann mit folgendem Befehl ausgegeben werden:
# cat /var/www/html/myamavis/htpasswd.users myamavis:Xivr/REGf5Uot
Abschließend sollten noch die Besitz- und Zugriffsrechte nur auf den Benutzernamen des Web-Servers hier des Apache HTTP Server der den Benutzernamen apache
hat mit folgenden Befehlen gesetzt werden, zuerst die Besitzrechte:
# chown apache.apache /var/www/html/myamavis/htpasswd.users
und noch die Zugriffsrechte mit folgendem Befehl:
# chmod 600 /var/www/html/myamavis/htpasswd.users
Die fertige .htaccess
könnte dann wie folgt aussehen:
# This configuration authenticates users agains an # IMAP server. You need apache module mod_auth_imap. #AuthBasicAuthoritative Off #Auth_IMAP_Enabled on #AuthName "myAmavis" #AuthType Basic #Require valid-user #Auth_IMAP_Authoritative on #Auth_IMAP_Server 127.0.0.1 #Auth_IMAP_Log on # Another configuration using a normal user auth file AuthName "myAmavis" AuthType Basic AuthUserFile /var/www/html/myamavis/htpasswd.users Require valid-user
Postfix AMaViS myAmavis Konfiguration
Zusätzlich zu den bereits vorhandenen Tabellen in der MySQL, benötigt myAmavis weitere Tabellen!
Dazu werden bereits vorgefertigte MySQL-Scripte mitgeliefert, die die entsprechenden zusätzlichen Tabellen in der MySQL-Datenbank anlegen.
Die MySQL-Scripte befinden sich im Verzeichnis:
/tmp/myAmavis-0.2/install
WICHTIG - Da myAmavis grundsätzlich für die Verwendung mit PostgreSQL konzipiert ist, sind folgende Anpassungen an dem Script /tmp/myAmavis-0.2/install/prepare_database.sql
vorzunehmen:
CREATE TABLE userauth ( id serial NOT NULL, -- Tachtler -- default: userid text, userid varchar(255), email_id int4, CONSTRAINT userauth_pkey PRIMARY KEY (id), CONSTRAINT userauth_email_id_fkey FOREIGN KEY (email_id) REFERENCES users (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE ); -- Tachtler -- WITHOUT OIDS; CREATE TABLE adminusers ( id serial NOT NULL, -- Tachtler -- default: userid text, userid varchar(255), CONSTRAINT adminusers_pkey PRIMARY KEY (id), CONSTRAINT adminusers_userid_key UNIQUE (userid) ); -- Tachtler -- WITHOUT OIDS; CREATE OR REPLACE VIEW mailsflat AS SELECT m.mail_id, m.secret_id, m.am_id, m.time_num, m.time_iso, m.sid, m.policy, m.client_addr, m.size, m.content, m.quar_type, m.quar_loc, m.dsn_sent, m.spam_level, m.message_id, m.from_addr, m.subject, m.host, mas.email AS sender, r.rid, r.ds, r.rs, r.bl, r.wl, r.bspam_level, mar.email AS recipient, u.policy_id, ua.userid FROM msgs m JOIN maddr mas ON m.sid = mas.id -- Tachtler -- default: JOIN msgrcpt r ON m.mail_id::text = r.mail_id::text JOIN msgrcpt r ON m.mail_id = r.mail_id JOIN maddr mar ON r.rid = mar.id -- Tachtler -- default: JOIN users u ON mar.email::text = u.email::text JOIN users u ON mar.email = u.email JOIN userauth ua ON u.id = ua.email_id;
Danach kann das MySQL-Script /tmp/myAmavis-0.2/install/prepare_database.sql
mit nachfolgendem Befehl, gegen die MySQL-Datenbank anzuwenden:
# mysql -u root amavis -p < /tmp/myAmavis-0.2/install/prepare_database.sql
Anschließend kann das MySQL-Script /tmp/myAmavis-0.2/install/create_indices.sql
mit nachfolgendem Befehl, gegen die MySQL-Datenbank anzuwenden:
# mysql -u root amavis -p < /tmp/myAmavis-0.2/install/create_indices.sql
Entsprechend dem neuen Benutzer und dessen neuem Passwort ist die Konfigurationsdatei /var/www/html/myamavis/config.php
noch anzupassen. Folgende Änderungen sind durchzuführen:
<?php $DBHOST = "127.0.0.1"; $DBNAME = "amavis"; # Tachtler # default: $DBUSER = "amavis"; $DBUSER = "amavisuser"; # Tachtler # default: $DBPASS = "amavis"; $DBPASS = "geheim"; ?>
Folgende beide Script
-Dateien sind teilweise anzupassen und anschließend nach /usr/local/sbin
zu kopieren:
/tmp/myAmavis-0.2/scripts/amavisd-delete-helper.sh
und/tmp/myAmavis-0.2/scripts/amavisd-release-helper.sh
Die Datei /tmp/myAmavis-0.2/scripts/amavisd-delete-helper.sh
muss wie folgt angepasst werden:
#!/bin/sh # Tachtler # default: /usr/bin/sudo /bin/rm "/var/amavis/quarantine/$1" /usr/bin/sudo /bin/rm "/var/virusmails/$1"
Die Datei /tmp/myAmavis-0.2/scripts/amavisd-release-helper.sh
muss muss NICHT angepasst werden!
Zum Abschluss werden mit folgendem Befehl die beiden Script
-Dateien nach /usr/local/sbin
kopiert:
# cp /tmp/myAmavis-0.2/scripts/amavisd-* /usr/local/sbin/
WICHTIG - Zum editieren der Konfigurationsdatei ist folgender Editor-Aufruf notwendig:
# sudoedit /etc/sudoers
Der letzte Schritt ist die Erweiterung der Konfigurationsdatei /etc/sudoers
um die Einträge der mitgelieferten Datei /tmp/myAmavis-0.2/install/sudoers_addon
, welche folgenden Inhalt aufweist und ebenfalls angepasst werden muss (nur relevanter Auszug):
... # Defaults specification # # Disable "ssh hostname sudo <cmd>", because it will show the password in clear. # You have to run "ssh -t hostname sudo <cmd>". # # Tachtler # default: Defaults requiretty # Defaults requiretty ... ... ## Allows myAmavis to execute these scripts apache ALL=(root) NOPASSWD: /usr/sbin/amavisd-release apache ALL=(root) NOPASSWD: /bin/rm /var/virusmails/*
Postfix AMaViS myAmavis MySQL anpassen
Da myAmavis standardmäßig auf eine PostgreSQL-Datenbank zugreift, mussten alle PHP-Dateien für die Verwendung mit einer MySQL-Datenbank umgeschrieben werden. Das Ergebnis kann hier
heruntergeladen werden!
Anpassungen waren an folgenden Dateien erforderlich:
/var/www/html/myamavis/deleteQuarantined.php
/var/www/html/myamavis/deleteWBEntries.php
/var/www/html/myamavis/getPolicyByEmailId.php
/var/www/html/myamavis/loadConfig.php
/var/www/html/myamavis/loadMainForm.php
/var/www/html/myamavis/loadQuarantine.php
/var/www/html/myamavis/loadStatistics.php
/var/www/html/myamavis/loadWBList.php
/var/www/html/myamavis/newPolicy.php
/var/www/html/myamavis/releaseQuarantined.php
/var/www/html/myamavis/savePolicyAssignment.php
/var/www/html/myamavis/savePolicy.php
/var/www/html/myamavis/updateWBEntries.php
WICHTIG - Folgende Dateien müssen nach dem herunterladen von myamavis-0.2_htdocs_mysql.tar.gz
noch an die individuellen Bedürfnisse angepasst werden:
/var/www/html/myamavis/.htaccess
/var/www/html/myamavis/config.php
/var/www/html/myamavis/submitReport.php
Postfix AMaViS myAmavis upgraden Version 0.3.3
Ab der myAmavis Version 0.3.3 wird standardmäßig nicht nur eine PostgreSQL-Datenbank unterstützt, sondern dann auch eine MySQL-Datenbank!
Nach dem extrahieren der Version 0.3.3 sind folgende Schritte für ein Upgrade notwendig!
Für ein Upgrade von Version 0.2 auf die Version 0.3.3 sind Änderungen an der bestehenden Datenbank erforderlich!
Folgendes Script - welches nur für dieses Upgrade angepasst wurde - kann zum Update der Datenbanken verwendet werden, das Original-Script befindet sich unter
/tmp/myAmavis-0.3.3/install/prepare_database_mysql.sql
und wurde entsprechend angepasst:
# cat prepare_database_mysql.sql -- modify database schema created by amavis -- add foreign key constraint for users(policy_id) -> policy(id) -- Tachtler -- ALTER TABLE users -- ADD CONSTRAINT users_policy_id_fkey FOREIGN KEY (policy_id) -- REFERENCES policy(id) -- ON DELETE CASCADE; -- make sure policy names are unique -- Tachtler -- ALTER TABLE policy -- ADD CONSTRAINT policy_policy_name_key UNIQUE (policy_name); -- create additional tables used by myAmavis -- Tachtler -- CREATE TABLE userauth -- ( -- id serial NOT NULL, -- userid varchar(255), -- email_id int4, -- CONSTRAINT userauth_pkey PRIMARY KEY (id), -- CONSTRAINT userauth_email_id_fkey FOREIGN KEY (email_id) -- REFERENCES users (id) MATCH SIMPLE -- ON DELETE CASCADE -- ); -- CREATE TABLE adminusers -- ( -- id serial NOT NULL, -- userid varchar(255), -- CONSTRAINT adminusers_pkey PRIMARY KEY (id), -- CONSTRAINT adminusers_userid_key UNIQUE (userid) -- ); -- because of the direct join with the users table recipient addresses -- will be directly mapped to entries in the users table. this will not -- work when there are catch-all-entries ('@example.com') in the users -- table! -- so if you want the statistics to be correct your users table must -- contain only complete email addresses, no catch-alls! -- Tachtler DROP VIEW `mailsflat`; CREATE OR REPLACE VIEW mailsflat AS SELECT m.mail_id, m.secret_id, m.am_id, m.time_num, m.time_iso, m.sid, m.policy, m.client_addr, m.size, m.content, m.quar_type, m.quar_loc, m.dsn_sent, m.spam_level, m.message_id, m.from_addr, m.subject, m.host, mas.domain AS sdomain, mas.email AS sender, r.rid, r.ds, r.rs, r.bl, r.wl, r.bspam_level, mar.domain AS rdomain, mar.email AS recipient, u.id AS user_id, p.id AS policy_id, p.policy_name FROM msgs m JOIN maddr mas ON m.sid = mas.id JOIN msgrcpt r ON m.mail_id = r.mail_id JOIN maddr mar ON r.rid = mar.id LEFT JOIN users u ON mar.email = u.email LEFT JOIN policy p ON u.policy_id = p.id WHERE m.content IS NOT NULL;
Danach kann das MySQL-Script /tmp/myAmavis-0.3.3/install/prepare_database_mysql.sql
mit nachfolgendem Befehl, gegen die MySQL-Datenbank anzuwenden:
# mysql -u root amavis -p < /tmp/myAmavis-0.3.3/install/prepare_database_mysql.sql
Anschließend kann das MySQL-Script /tmp/myAmavis-0.3.3/install/create_indices_mysql.sql
mit nachfolgendem Befehl, gegen die MySQL-Datenbank anzuwenden:
# mysql -u root amavis -p < /tmp/myAmavis-0.3.3/install/create_indices_mysql.sql
WICHTIG - Hier auftretende Fehlermeldungen bitte individuell je nach Stand der Datenbank behandeln, evtl. mit phpMyAdmin überprüfen!
Danach wird der Inhalt des Verzeichnisses /var/www/html/myamavis
mit folgendem Befehl komplett gelöscht:
# rm /var/www/html/myamavis -rf
Anschließend wird das Verzeichnis /tmp/myAmavis-0.3.3/htdocs
nach /var/www/html/myamavis
mit folgendem Befehl kopiert und gleichzeitig umbenannt:
# mv /tmp/myAmavis-0.3.3/htdocs /var/www/html/myamavis
Die Besitzrechte für das Verzeichnis /var/www/html/myamavis
müssen noch korrigiert werden, was mit folgendem Befehl durchgeführt wird:
# chown -R root.apache /var/www/html/myamavis
Die Zugriffsrechte müssen ebenfalls noch für das Verzeichnis /var/www/html/myamavis
noch korrigiert werden, was mit folgenden Befehlen durchgeführt wird:
# chmod -R o-rx /var/www/html/myamavis
WICHTIG - Folgende Dateien müssen nach dem herunterladen von myamavis-0.3.3
wieder an die individuellen Bedürfnisse angepasst werden:
/var/www/html/myamavis/.htaccess
/var/www/html/myamavis/config.php
/var/www/html/myamavis/submitReport.php
Beispiele für die Dateien
/var/www/html/myamavis/config.php
und/var/www/html/myamavis/submitReport.php
sind nachfolgend beschrieben:
/var/www/html/myamavis/config.php
# cat config.php <?php /* include the correct database_X.php file matching your database system here */ # Tachtler # default: include("database_postgres.php"); include("database_mysql.php"); // how to contact your database $DBHOST = "127.0.0.1"; $DBNAME = "amavis"; $DBUSER = "amavis"; # Tachtler # default: $DBPASS = "amavis"; $DBPASS = "geheim"; /* In most cases you can set the following to "mailsflat" which makes myAmavis always use the sql view "mailsflat" when generating statistics. (see install/prepare_database_X.sql on how to create this view). If you receive a lot of mails the statistics pages in myAmavis can be very slow because of the huge amount of data this view generates. To speed up things a little bit, you could periodically create a "snapshot" of the current mail data by creating a table containing the results of the view (see tools/create_stats_snapshot_X.sh). If you do this you can set the following variable to the name of the created table ("mailsflat_static"). You should create this snapshot at regular intervals (e.g. using a cron job) to ensure it contains recent mail data. */ $MAILSVIEW = "mailsflat"; /* $DEBUG can be 0 (no debug) or 1 (enable debug messages) */ $DEBUG = 0; ?>
/var/www/html/myamavis/submitReport.php
# cat submitReport.php <?php $userid = $_SERVER["PHP_AUTH_USER"]; $mailheaders = $_REQUEST["mailheaders"]; // Tachtler // default: mail("myamavis@kapott.org", mail("postmaster@tachtler.net", "[myAmavis] user report from $userid", $mailheaders, // Tachtler // default: "From: apache@hora-obscura.de" "From: apache@tachtler.net" ); echo "Report submitted."; ?>