Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_amavis_myamavis_installieren

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.";
?>
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/postfix_amavis_myamavis_installieren.txt · Zuletzt geändert: 2012/06/13 15:05 von klaus