Różnice pomiędzy wersjami 2 i 4 (Spinanie 2 wersji)
⇤ ← Wersja 2 z 2015-05-16 16:12:05 →
Rozmiar: 5272
Edytor: wtps0n
Komentarz: poprawne patchowanie po zmianach w samym programie
← Wersja 4 z 2015-05-23 05:15:42 → ⇥
Rozmiar: 5786
Edytor: wtps0n
Komentarz: + dodatkow patche dla php5.5.x
Usunięcia zostały oznaczone w ten sposób. Dodatki zostały oznaczone w ten sposób.
Linia 3: Linia 3:

<<TableOfContents()>><<BR>>
Linia 120: Linia 122:
 * [[attachment:Quarantine.lib.php.patch]]
Kandydaci do zgłoszenia do ports jako stałych patchy:
 * [[attachment:patch-lib__Auth.class.php]]
 * [[attachment:patch-lib__CmnFns.class.php]]
 * [[attachment:patch-lib__Quarantine.lib.php]]
 * [[attachment:patch-lib__Template.class.php]]
Linia 130: Linia 137:

# dop/oki nie b/edzie zg/loszone do ports
#
patch -p0 < /var/tmp/mailzu/patch-lib__Auth.class.php
patch -p0 < /var/tmp/mailzu/patch-lib__CmnFns.class.php
patch -p0 < /var/tmp/mailzu/patch-lib__Quarantine.lib.php
patch -p0 < /var/tmp/mailzu/patch-lib__Template.class.php


Konfiguracja MailZu

Powstał program (WebUI) do przepuszczania maili z kwarantanny do użytkownika. Został (albo trzeba to zrobić) zainstalowany z /usr/ports/security/mailzu. Jako bazę danych najlepiej wykorzystać PostgreSQL

Kompilacja oraz instalacja

W trakcie instalacji, powstawał błąd przy instalacji PEAR. Rozwiązaniem jest chwilowe wyłączenie następujących modułów w /usr/local/etc/php.extensions.ini:

mhash.so
openssl.so
ftp.so
snmp.so
imap.so
ldap.so
mysql.so
pdo_mysql.so
mysqli.so
curl.so

Chociaż najbardziej podejrzane są moduły związane z mySQL-em. Opisany przypadek dotyczy FreeBSD 7.x.

Baza danych

Utworzenie bazy danych:

createuser -U pgsql -SDR -PE kolejorz
createdb -U pgsql -O kolejorz -E UTF8 intercity

UWAGA! Zmiana dla PostgreSQL9: zmienił się format dla bytea. Aby działało poprawnie, należy w pliku postgresql.conf ustawić następującą zmienną:

bytea_output = 'escape'                 # hex, escape

Następnie zrestartować server Postgres i można działać dalej.

Wyłuskanie schematu bazy danych z dokumentacji

Nie ma oddzielnie schematu bazy danych. Tak więc należy wyłuskać go z dokumentacji /usr/local/share/doc/amavisd-new/README.sql-pg.

Instalacja schematu w bazie danych

psql -U kolejorz intercity < /var/tmp/_mailzu.sql

UPDATE 26.01.2011: Trzeba dodać następującą funkcję do bazy danych, aby poprawnie działało podsumowanie kwarantanny (symulacja funckji z mySQL):

   1 CREATE OR REPLACE FUNCTION from_unixtime(unixts integer)
   2   RETURNS timestamp without time zone AS
   3 $BODY$SELECT CAST('epoch' As timestamp) + ($1 * INTERVAL '1 second') $BODY$
   4   LANGUAGE 'sql' IMMUTABLE;

Konfiguracja amavisd

Do konfiguracji amavisd.conf należy dodać następujące elementy:

# --- zapisywanie kwarantanny w bazie danych ---------------------------------
#
@storage_sql_dsn = (
      ['DBI:Pg:database=<DATABASE>;host=127.0.0.1;port=5432', '<USER>',
       '<PASSWORD>'
]);
$sql_allow_8bit_address = 1;

$inet_socket_port = [10024,9998]; 

# --- przypisanie si/e do wszystkich interfejs/ow, aby dobrze dzia/la/l MailZu
#
$inet_socket_bind = undef;

# --- policy bank ------------------------------------------------------------
#
$interface_policy{'9998'} = 'AM.PDP';
$policy_bank{'AM.PDP'} = {
    protocol => 'AM.PDP',
    inet_acl => [qw( 127.0.0.1 <IP_1> <IP_2> )],
};

$virus_quarantine_method = 'sql:';
$banned_files_quarantine_method = 'sql:';
$spam_quarantine_method         = 'sql:';

$virus_quarantine_to = 'virus-quarantine';    # traditional local quarantine
$spam_quarantine_to = 'spam-quarantine';
$banned_quarantine_to = 'banned-quarantine';

Po wykonaniu zmian (trzeba wpisać w odpowiednich miejscach), należy wykonać restart amavisd:

rcrestart amavisd

Konfiguracja mailzu

Aplikacja mailzu (PHP) wymaga nieco poprawek oraz konfiguracji:

Polonizacja

Może z czasem pojawi się polska wersja mailzu, ale na razie trzeba posiłkować się pracą wtps0na:

cd /usr/local/www/mailzu/

# przekopiowanie polskiego tłumaczenia
cp /var/tmp/mailzu/pl.* lang/

Patchowanie

Dodatkowo konieczne jest dodanie kilku patchy, aby aplikacja działała poprawnie:

Kandydaci do zgłoszenia do ports jako stałych patchy:

cd /usr/local/www/mailzu/

patch -p0 < /var/tmp/mailzu/DBEngine.class.php.patch
patch -p0 < /var/tmp/mailzu/langs.php.patch
patch -p0 < /var/tmp/mailzu/messagesAdmin.php.patch
patch -p0 < /var/tmp/mailzu/quarantine.template.php.patch
patch -p0 < /var/tmp/mailzu/read_mail.php.patch

# dop/oki nie b/edzie zg/loszone do ports
#
patch -p0 < /var/tmp/mailzu/patch-lib__Auth.class.php
patch -p0 < /var/tmp/mailzu/patch-lib__CmnFns.class.php
patch -p0 < /var/tmp/mailzu/patch-lib__Quarantine.lib.php
patch -p0 < /var/tmp/mailzu/patch-lib__Template.class.php

config/config.php

Plik konfiguracyjny jest opisany bardzo dobrze, tak więc kilka chwil czytania i plik jest gotowy...

cd /usr/local/www/mailzu/config/
mkdir -p RCS

Ustawienie uprawnień

Po wykonaniu konfiguracji, należy ustawić uprawnienia do plików:

cd /usr/local/www/mailzu/
find ./  -exec chgrp www {} \;
find ./ -type f -exec chmod 0040 {} \;
find ./ -type d -exec chmod 0050 {} \;
cd config/
chmod 0240 config.php
chmod 0750 RCS/

A potem to już pozostaje jedynie zabezpieczyć konfigurację przed zmianami.

Konfiguracja Apache'a

Konfiguracja Apache'a sprowadza się do wykonania aliasu, aby udostępnić MailZu:

# --- definicja stronek z HTMLem ---------------------------------
#
<Directory "/usr/local/www/mailzu/">
    Options none
    AllowOverride Limit
    Order allow,deny
    Allow from all
</Directory>

[...]

Alias /mq/ "/usr/local/www/mailzu/"

Po wykonaniu zmian, trzeba przeładować konfigurację Apache'a:

apachectl graceful


{i} Wszelkie sprawy do administratora.

MailZu (ostatnio edytowane 2024-09-28 10:04:48 przez wtps0n)