Debian levelező szerver telepítése

Cvk/ november 3, 2008/ Debian, E-mail, install, linux, Szerver, telepítés

Debian mail szerver telepítése. Az alábbi leírás az interneten található dokumentumokból van összegyűjtve.

A telepítés végén, egy komplett levelező rendszert kapunk debian Etch-And-A-Half alapon, Postfix Virtual PostfixAdmin MySQL Courier Maildrop Amavisd-new SquirrelMail MailZu párosítással. A rendszer telepítésére most nem fordítok figyelmet.

Az alábbi lemez képet használtam a leírás létrehozásához:

wget http://cdimage.debian.org/debian-cd/4.0_r4a/i386/iso-cd/debian-40r4a-etchnhalf-i386-netinst.iso
bootol a rendszer
A telepítés tasksel kérdésénél kivettem az “Asztali környezet” elől a jelölést, így egy minimális rendszert kapva.

A kész rendszerrel megkezdhetjük a munkát:
apt-get install ntpdate ssh mc
frissítsük le a rendszeridőt:
ntpdate time.kfki.hu
Állítsuk be a nekünk kényelmes lokalizációt, ha ezt a telepítés alatt elmulasztottuk volna:
cat /etc/environment
LANG="hu_HU.UTF-8"
Vegyük fel a contrib és non-free tárolókat is:
mcedit /etc/apt/sources.list
deb http://ftp.hu.debian.org/debian/ etch main contrib non-free
deb ftp://ftp.hu.debian.org/debian etch-proposed-updates main contrib non-free
deb http://security.debian.org/ etch/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
frissítsük le:
apt-get update && apt-get dist-upgrade
Ha sima etch rendszeren végezzük a telepítést, a volatile tárolóhoz szükség van a pgp kulcsának felvételére:
gpg --keyserver subkeys.pgp.net --recv-key BBE55AB3
gpg --armor --export BBE55AB3 | apt-key add -
A frissítés után indítsuk újra a gépet az új kernellel:
reboot

Távolítsuk el a fölösleges programokat, a szerver nem fog megosztásokat kezelni:
apt-get remove nfs-common pidentd portmap
Hosszuk létre a levelező szerverhez a tűzfal szabályokat:
iptables -F
iptables -N TUZFAL
iptables -F TUZFAL
iptables -A INPUT -j TUZFAL
iptables -A FORWARD -j TUZFAL
iptables -A TUZFAL -p tcp -m tcp --dport 25 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --dport 110 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --dport 143 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --dport 443 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --dport 465 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --dport 587 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --dport 993 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --dport 995 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --dport 4650 --syn -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp -s 192.168.1.0/24 --dport 22 --syn -j ACCEPT
iptables -A TUZFAL -i lo -j ACCEPT
iptables -A TUZFAL -p udp -m udp --sport 53 -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --sport 53 -j ACCEPT
iptables -A TUZFAL -p udp -m udp --dport 123 -j ACCEPT
iptables -A TUZFAL -p udp -m udp --sport 6277 -j ACCEPT
iptables -A TUZFAL -p udp -m udp --sport 24441 -j ACCEPT
iptables -A TUZFAL -p tcp -m tcp --syn -j REJECT
iptables -A TUZFAL -p udp -m udp -j REJECT
iptables-save > /etc/tuzfal-szabaly
iptables-restore < /etc/tuzfal-szabaly
Állítsuk be, hogy a tűzfal automatikusan betöltődjön a gép indulásakor. Az /etc/network/interfaces fájlba az “iface lo inet loopback” alatti üres sorba illesszük ezt be:
pre-up iptables-restore < /etc/tuzfal-szabaly
Az allow-hotplug eth0 sort cseréljük le auto eth0-ra. Telepítsük az ntp-t, a c fordítót a logcheck et és egyéb dolgokat:
apt-get install ntp make gcc bison flex libc6-dev logcheck logcheck-database flip psmisc dpkg-dev

Mysql szerver telepítése

apt-get install mysql-server
Növeljük meg az InnoDB táblákban a használt memória méreteit, és a logok méreteit:
cp /etc/mysql/my.cnf /etc/mysql/my.cnf-original
zcat /usr/share/doc/mysql-server-5.0/examples/my-medium.cnf.gz > /etc/mysql/my.cnf
cd /etc/mysql/
wget http://cvk.hu/mail_szerver/my-medium.cnf.patch.txt
patch my.cnf < my-medium.cnf.patch.txt
/etc/init.d/mysql restart
Adjunk jelszót az adatbázis ‘root’ felhasználójának ( a debian hosztnevet le kell cserélni az aktuálisra ):
mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root_jelszo');
SET PASSWORD FOR 'root'@'debian' = PASSWORD('root_jelszo');
FLUSH PRIVILEGES;
SHOW VARIABLES LIKE 'innodb_fast_shutdown';
Ezzel ellenőrizzük az innodb_fast_shutdown státuszát. ha az ‘1’, akkor kiléphetünk.
QUIT
A patchelt my.cnf miatt megváltozott a log fájl szerkezete, ezt állítsuk át kézzel:
/etc/init.d/mysql stop
mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/iblogfile0-old
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/iblogfile1-old
/etc/init.d/mysql start
ls -l /var/lib/mysql/ib_*
-rw-rw---- 1 mysql mysql 50331648 2008-10-25 11:25 /var/lib/mysql/ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 2008-10-25 00:44 /var/lib/mysql/ib_logfile1
Ha sikerült átállítani, akkor az új mérettel láthatjuk a 48MB -os log fájlokat (50331648).

Apache, php telepítése

apt-get install apache-ssl libapache-mod-php5 php5 php5-common php5-mysql php5-gd php5-mcrypt mcrypt ca-certificates openssl

Country Name "HU"
State or Province Name "PEST"
Locality Name "Budapest"
Organisation Name "home.cvk.hu"
Organisational Unit Name "WebMail Szerver"
Host Name "home.cvk.hu"
Email Address "[email protected]"

Telepítsük az MTA-t:

apt-get install postfix postfix-pcre postfix-mysql libsasl2-modules-sql libsasl2-modules
A kérdésekre így válaszoljunk: General type of configuration? Internet Site Mail name? home.cvk.hu
apt-get install courier-imap-ssl courier-pop-ssl courier-authlib-mysql
Create directories for web-based administration ? [Nem]

Hozzuk létre, és állítsuk be az SSL tanúsítványokat

Növeljük meg a létrehozandó tanusítványok elévülési idejét 1 évről 10 évre:
sed -i 's/= 365\t/= 3653\t/' /etc/ssl/openssl.cnf
grep 365 /etc/ssl/openssl.cnf
Hozzuk létre a tanusítványoknak a környezetet:
cd /root
mkdir CA
cd CA
mkdir demoCA
cd demoCA
mkdir newcerts
mkdir private
echo '01' > serial
touch index.txt
cd ..
Generáljuk le a root CA tanusítványt:
openssl req -new -x509 -extensions v3_ca -keyout demoCA/private/cakey.pem -out cacert.pem -days 3653
A generáláskor megadunk egy jelszót, ezt ne veszítsük el, mert ezzel tudjuk hitelesíteni a később létrehozott tanusítványokat. Adjuk meg a kért információkat:
Country Name "HU"
State or Province Name "PEST"
Locality Name "Budapest"
Organisation Name "home.cvk.hu"
Organisational Unit Name "WebMail Szerver"
Common Name (eg, YOUR name) "home.cvk.hu RootCA"
Email Address "[email protected]"

cp -i demoCA/private/cakey.pem demoCA/private/cakey.home.cvk.hu.pem
chmod 600 demoCA/private/*
cp -i cacert.pem cacert.home.cvk.hu.pem
cp -i cacert.pem cacert.home.cvk.hu.crt
A cacert.home.cvk.hu.pem és a cacert.home.cvk.hu.crt tanusítványokat kell publikálni a felhasználók felé, és az ő böngészőjükbe telepíteni, hogy elfogadhassák a titkosított weboldalakat. A következőkben létrehozott tanusítvány felel majd a web, imap, pop szerverek titkosításér. Arra ügyeljünk, hogy amit majd itt adunk meg Common Name-nek, annak KELL lennie az FQDN (fully qualified domain name) hostnévnek, amikre a böngészőkből érkezik a kérelem. Az FQDN az a név, melyet a gethostbyname rendel a gethostname által visszaadott hostnévhez. Ne írj be email címet, és a jelszót is hagyd üresen(enter).
openssl req -new -nodes -out req.pem
Country Name "HU"
State or Province Name "PEST"
Locality Name "Budapest"
Organisation Name "home.cvk.hu"
Organisational Unit Name "WebMail Szerver"
Common Name (eg, YOUR name) "home.cvk.hu"
Email Address

cp -i privkey.pem privkey.home.cvk.hu.pem
chmod 600 privkey.*
cp -i req.pem req.home.cvk.hu.pem
Írjuk alá a tanusítványt, a jelszó kérésekor adjuk meg azt, amit a Root CA nak megadtunk majd válaszoljuk 2x Y -al:
openssl ca -out cert.pem -cert cacert.pem -infiles req.pem

mv -i cert.pem temp.cert.home.cvk.hu.pem

openssl x509 -in temp.cert.home.cvk.hu.pem -out cert.pem

cp -i cert.pem cert.home.cvk.hu.pem
cat privkey.home.cvk.hu.pem cert.home.cvk.hu.pem > key-cert.pem
cp -i key-cert.pem key-cert.home.cvk.hu.pem
cp -i key-cert.pem key-cert-dh.home.cvk.hu.pem

openssl gendh >> key-cert-dh.home.cvk.hu.pem
chmod -R 600 /root/CA
Cseréljük le az apache-ssl certjét az elöbb generálttal, majd indítsuk újra a szolgáltatást:
cd /root/CA/
cp key-cert.home.cvk.hu.pem /etc/apache-ssl/
chmod 600 /etc/apache-ssl/key-cert.home.cvk.hu.pem
sed -i 's/apache.pem/key-cert.home.cvk.hu.pem/' /etc/apache-ssl/httpd.conf
/etc/init.d/apache-ssl stop
/etc/init.d/apache-ssl start
Állítsuk be a Postfixhez szükséges TLS kulcsokat:
cp -i /etc/postfix/main.cf /etc/postfix/main.cf-$(date +'%y%m%d')
mkdir -p /etc/postfix/ssl
cp privkey.home.cvk.hu.pem /etc/postfix/ssl
cp cert.home.cvk.hu.pem /etc/postfix/ssl
cp cacert.home.cvk.hu.pem /etc/postfix/ssl
postconf -e "smtpd_tls_key_file = /etc/postfix/ssl/privkey.home.cvk.hu.pem"
postconf -e "smtpd_tls_cert_file = /etc/postfix/ssl/cert.home.cvk.hu.pem"
postconf -e "smtpd_tls_CAfile = /etc/postfix/ssl/cacert.home.cvk.hu.pem"
postconf -e "smtpd_tls_received_header = yes"
postconf -e "smtpd_use_tls = yes"
chmod 600 /etc/postfix/ssl/*
postfix reload
Telepítsük a tanusítványt a Courier IMAP szerverhez:
cp -i key-cert-dh.home.cvk.hu.pem /etc/courier/
chmod 600 /etc/courier/key-cert-dh.home.cvk.hu.pem
chown daemon /etc/courier/key-cert-dh.home.cvk.hu.pem
sed -i 's/imapd.pem/key-cert-dh.home.cvk.hu.pem/' /etc/courier/imapd-ssl
/etc/init.d/courier-imap-ssl stop
/etc/init.d/courier-imap-ssl start
Telepítsük a tanusítványt a Courier POP3 szerverhez:
sed -i 's/pop3d.pem/key-cert-dh.home.cvk.hu.pem/' /etc/courier/pop3d-ssl
/etc/init.d/courier-pop-ssl stop
/etc/init.d/courier-pop-ssl start
Mentsük le a szerveren a létrehozott tanusítványokat:
cp -r /root/CA /root/CA-$(date +'%y%m%d')

Engedélyezzük a PHP-t az apache-ssl ben:

sed -i 's|#AddType application/x-httpd-php .php|AddType application/x-httpd-php .php|' /etc/apache-ssl/httpd.conf
cat /etc/apache-ssl/modules.conf |grep php5_module
Ezt kell kapni:
LoadModule php5_module /usr/lib/apache/1.3/libphp5.so

Engedélyezzük a php modult, és indítsuk újra a szolgáltatást:
apache-modconf apache-ssl enable mod_php5
/etc/init.d/apache-ssl restart
Állítsuk be a kezdőlapot:
cd /var/www
wget http://cvk.hu/mail_szerver/virtual.index.html
cp index.html index.html-apache-original
cp virtual.index.html index.html
sed -i 's/Our Organization/home.cvk.hu/' index.html
sed -i 's/somehost.domain.tld/home.cvk.hu/' index.html
sed -i 's/domain.tld/home.cvk.hu/' index.html
chown root:www-data index.html

Telepítsük és állítsuk be a phpmyadmin -t

apt-get install phpmyadmin
Változtassuk meg az eléréshez az alapértelmezett “admin” nevet:
sed -i 's/admin/új_admin_neve/' /etc/phpmyadmin/htpasswd.setup
Adjunk jelszót az új admin felhasználónknak:
htpasswd -c /etc/phpmyadmin/htpasswd.setup új_admin_neve
New password: új_admin_jelszava
Re-type new password: új_admin_jelszava
Hozzuk létre a konfigot, hogy kérjen jelszót:
mcedit /etc/apache-ssl/conf.d/phpmyadmin.conf

<Directory /var/www/phpmyadmin/> order deny,allow deny from all allow from 192.168.1.2 AuthUserFile /etc/phpmyadmin/htpasswd.setup AuthGroupFile /dev/null AuthName "phpMyAdmin" AuthType Basic require valid-user </Directory> /etc/init.d/apache-ssl restart
Nyissuk meg a böngészőben a címet: https://home.cvk.hu/phpmyadmin

Két jelszót fog kérni. Az első jelszó amit az elöbb adtunk meg az új_admin_jelszava. A másik már a phpmyadmin ba való belépéshez szükséges root és a hozzá tartozó root_jelszo. Az SSL tanusítványt vagy elfogadjuk minden alkalommal, vagy a RootCA-t telepítjük a böngészőnkbe.

Postfix konfiguráció

postconf -e "mydomain = home.cvk.hu"
postconf -e "myorigin = home.cvk.hu"
postconf -e "myhostname = home.cvk.hu"
Ellenőrizzük a beállításokat:
postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = home.cvk.hu, debian.cvk.home, localhost.cvk.home, localhost
mydomain = home.cvk.hu
myhostname = home.cvk.hu
mynetworks = 127.0.0.0/8
myorigin = home.cvk.hu
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.home.cvk.hu.pem
smtpd_tls_cert_file = /etc/postfix/ssl/cert.home.cvk.hu.pem
smtpd_tls_key_file = /etc/postfix/ssl/privkey.home.cvk.hu.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtpd_use_tls = yes
Töltsük le a Postfix forrását:
cd /usr/local/src
wget http://ftp.debian.org/debian/pool/main/p/postfix/postfix_2.3.8.orig.tar.gz
tar xzf postfix_2.3.8.orig.tar.gz
Válaszoljunk a következő parancs kérdéseire “n” el a “felülírod?” kérdésekre (5db):
cp -i /usr/local/src/postfix-2.3.8/conf/* /etc/postfix
cp -i /etc/postfix/header_checks /etc/postfix/body_checks
cp -i /etc/postfix/access /etc/postfix/sender_access
cp -i /etc/postfix/access /etc/postfix/rbl_client_exceptions
cp -i /etc/postfix/access /etc/postfix/rbl_sender_exceptions
cp -i /etc/postfix/access /etc/postfix/rbl_recipient_exceptions
cp -i /etc/postfix/access /etc/postfix/reject_over_quota

Telepítsük a Squirrelmail -t

apt-get install squirrelmail squirrelmail-locales maildrop
apt-get install sudo php-pear php5-mysql php5-gd php5-cli php5-common php5-mcrypt
apt-get install php-db php-net-socket php-log php-net-smtp

A PostfixAdmin és a maildorp telepítése, konfigurálása

Hozzuk létre a virtuális felhasználót és csoportot:
groupadd vmail -g 6060
useradd vmail -u 6060 -g 6060
Hozzuk létre a katalógusát, ahova a levelek fogak érkezni:
mkdir /var/vmail
chown -R vmail:vmail /var/vmail
chmod -R 700 /var/vmail
Telepítsük a subversiont és töltsük le vele a postfixadmin friss svn forrását:
apt-get install subversion
cd /var/www
svn -r 1 co https://postfixadmin.svn.sourceforge.net/svnroot/postfixadmin/trunk postfixadmin
cd /var/www/postfixadmin
cp -i DATABASE_MYSQL.TXT DATABASE_MYSQL.TXT~
sed -i "s/password('postfix')/password('pfix_jelszo')/" DATABASE_MYSQL.TXT
sed -i "s/password('postfixadmin')/password('pfixadm_jelszo')/" DATABASE_MYSQL.TXT
wget http://cvk.hu/mail_szerver/database_mysql.patch.txt
patch DATABASE_MYSQL.TXT < database_mysql.patch.txt
mysql -u root -p < DATABASE_MYSQL.TXT
Itt meg kell adni az SQL hez tartorzó root_jelszo -t.
chmod 600 DATABASE_MYSQL.TXT
cp config.inc.php.sample config.inc.php
sed -i "s|admin_url'] = ''|admin_url'] = 'https://home.cvk.hu/postfixadmin'|" config.inc.php
sed -i "s|admin_path'] = ''|admin_path'] = '/var/www/postfixadmin'|" config.inc.php
sed -i "s/password'] = 'postfixadmin'/password'] = 'pfixadm_jelszo'/" config.inc.php
sed -i 's/[email protected]/postmaster@home.cvk.hu/' config.inc.php
sed -i 's/[email protected]/abuse@home.cvk.hu/' config.inc.php
sed -i 's/[email protected]/hostmaster@home.cvk.hu/' config.inc.php
sed -i 's/[email protected]/postmaster@home.cvk.hu/' config.inc.php
sed -i 's/[email protected]/webmaster@home.cvk.hu/' config.inc.php
sed -i 's/autoreply.change-this-to-your.domain.tld/autoreply.home.cvk.hu/' config.inc.php
sed -i 's|to change-this-to-your.domain.tld|to https://home.cvk.hu/postfixadmin|' config.inc.php
sed -i 's|http://change-this-to-your.domain.tld|https://home.cvk.hu/postfixadmin|' config.inc.php
sed -i "s/domain_path'] = 'NO/domain_path'] = 'YES/" config.inc.php
sed -i "s/domain_in_mailbox'] = 'YES/domain_in_mailbox'] = 'NO/" config.inc.php
sed -i "s/mailboxes'] = '10'/mailboxes'] = '300'/" config.inc.php
sed -i "s/maxquota'] = '10'/maxquota'] = '500'/" config.inc.php
sed -i "s/quota'] = 'NO/quota'] = 'YES/" config.inc.php
sed -i 's/EHLO/HELO/' functions.inc.php
Az adminisztrációs részhez hozzunk létre nevet és jelszót:
cd /var/www/postfixadmin/admin
htpasswd -c .htpasswd pfadmin_felhasználóneve
Hozzuk létre a konfigot:
mcedit /etc/apache-ssl/conf.d/postfixadmin.conf
<Directory /var/www/postfixadmin/admin/>
order deny,allow
deny from all
allow from 192.168.1.2
AuthUserFile /var/www/postfixadmin/admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Postfix Admin"
AuthType Basic
require valid-user
</Directory>
/etc/init.d/apache-ssl restart
Amikor hozzáadunk egy felhasználót postfixadminhez, ez rekordokat hoz létre a MySQL adatbázisban de ez nem hoz létre egy Maildirt annak a felhasználónak. Ezzel a javítással ez megoldódik.
cd /var/www/postfixadmin/
wget http://cvk.hu/mail_szerver/postfixadmin.autocreate.patch.txt
wget http://cvk.hu/mail_szerver/postfixadmin.lowercase.patch.txt
wget http://cvk.hu/mail_szerver/postfixadmin.multipatch.txt
wget http://cvk.hu/mail_szerver/admin-edit-mailbox.patch.txt
wget http://cvk.hu/mail_szerver/edit-mailbox.patch.txt
cp create-alias.php create-alias.php.original
cp create-mailbox.php create-mailbox.php.original
cp edit-mailbox.php edit-mailbox.php.original
cp admin/create-alias.php admin/create-alias.php.original
cp admin/create-admin.php admin/create-admin.php.original
cp admin/create-domain.php admin/create-domain.php.original
cp admin/create-mailbox.php admin/create-mailbox.php.original
cp admin/edit-mailbox.php admin/edit-mailbox.php.original
cp users/vacation.php users/vacation.php.original
cp stylesheet.css stylesheet.css.original
cp admin/list-virtual.php admin/list-virtual.php.original
cp templates/overview.tpl templates/overview.tpl.original
cp templates/admin_list-virtual.tpl templates/admin_list-virtual.tpl.original
cp templates/login.tpl templates/login.tpl.original
cp templates/header.tpl templates/header.tpl.original
cp templates/admin_list-domain.tpl templates/admin_list-domain.tpl.original
cp languages/de.lang languages/de.lang.original
cp search.php search.php.original
patch -p0 < postfixadmin.lowercase.patch.txt
patch -p0 < postfixadmin.multipatch.txt
patch -p0 < postfixadmin.autocreate.patch.txt
patch -p0 < edit-mailbox.patch.txt
patch admin/edit-mailbox.php <admin-edit-mailbox.patch.txt
cd /usr/sbin
wget http://cvk.hu/mail_szerver/maildirmake.sh.txt
mv maildirmake.sh.txt maildirmake.sh
chmod +x maildirmake.sh
wget http://cvk.hu/mail_szerver/quotachange.sh.txt
mv quotachange.sh.txt quotachange.sh
chmod +x quotachange.sh
Adjuk hozzá a sudoers fájlhoz a scriptek futtatási jogát a www-data felhasználónak. A debian nevet le kell cserélni az adott gép hostnevére.
mcedit /etc/sudoers
www-data debian=NOPASSWD: /usr/sbin/maildirmake.sh
www-data debian=NOPASSWD: /usr/sbin/quotachange.sh
Állítsuk be a jogokat
cd /var/www/postfixadmin
chown -R root:www-data ../postfixadmin
chmod 640 *.php *.txt *.original
chmod 600 *.TXT
chmod 640 admin/*.php admin/*.original
chmod 640 images/*.png
chmod 640 languages/*.lang languages/*.original
chmod 640 templates/*.tpl templates/*.original
chmod 640 users/*.php users/*.original
Futtassuk le a böngészőnkben a postfixadmin setup scriptjét: https://home.cvk.hu/postfixadmin/setup.php Ellenőrizzük, hogy minden sor végén OK legyen. Ha így van, nevezzük át a setup.php fájlt.
mv /var/www/postfixadmin/setup.php /var/www/postfixadmin/setup.php.txt
A postfixadmin admin részében lépjünk be. https://home.cvk.hu/postfixadmin/login.php Első belépéskor az [email protected] névvel, és admin jelszóval tudunk belépni. Hozzuk létre az első tartományunkat pl.: home.cvk.hu. Kattintsunk a felső menüben az Új Domain menüpontra, majd töltsük ki a mezőket. Hagyjuk üresen a Mail server is backup MX jelölő négyzetet. Hozzunk létre egy új admin felhasználót. Kattintsunk az Új Admin menüpontra. Adjuk meg az adminisztrátor email címét, pl: [email protected] és a hozzá tartozó ajánlottan erős jelszót. Ha a felhasználót felvettük, kattintsunk az Admin Lista menüre, és az újonan felvett admin sorában válasszuk a szerkesztés linket. Itt tudjuk felvenni Super Adminnak a felhasználót, a Super Admin jelölő négyzet bejelölésével. Amint ez megtörtént, jelentkezzünk ki, majd lépjünk be az új adminisztrátorunkkal, és töröljük a felesleges [email protected] szuperadmint. Hozzunk létre egy normális postafiókot. Válassuk ki Új postafiók menüpontot. Írjuk be a felhasználónevet, és adjunk jelszót neki. Ellenőrizzük, hogy a felhasználó felvételekor automatikusan létrejöttek-e a beállításoknak megfelelő katalógusok, és fájlok:
ls -l /var/vmail/home.cvk.hu/
összesen 4
drwx------ 6 vmail vmail 4096 2008-10-25 20:12 cvk
ls -l /var/lib/squirrelmail/data
összesen 4
-rw------- 1 www-data www-data 50 2008-10-25 20:12 [email protected]
Állítsuk be a virtuális felhasználókat
cd /etc/postfix
wget http://cvk.hu/mail_szerver/mysql_virtual_alias_maps.cf
wget http://cvk.hu/mail_szerver/mysql_virtual_domains_maps.cf
wget http://cvk.hu/mail_szerver/mysql_virtual_mailbox_maps.cf
sed -i 's/password = postfix/password = pfix_jelszo/' mysql_virtual_alias_maps.cf
sed -i 's/password = postfix/password = pfix_jelszo/' mysql_virtual_domains_maps.cf
sed -i 's/password = postfix/password = pfix_jelszo/' mysql_virtual_mailbox_maps.cf
chmod 640 mysql_*
chown root:postfix mysql_*
cp /etc/postfix/main.cf /etc/postfix/main.cf-domain
postconf -e "mydestination = home.cvk.hu, localhost.home.cvk.hu, localhost"
touch /etc/postfix/virtual
postmap /etc/postfix/virtual
postconf -e "virtual_minimum_uid = 6060"
postconf -e "virtual_gid_maps = static:6060"
postconf -e "virtual_uid_maps = static:6060"
postconf -e "virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf, hash:/etc/postfix/virtual"
postconf -e "virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf"
postconf -e "virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf"
postconf -e "virtual_transport = maildrop"
postconf -e "virtual_mailbox_base = /var/vmail/"
postconf -e "maildrop_destination_concurrency_limit = 2"
postconf -e "maildrop_destination_recipient_limit = 1"

Maildrop beállítása

cd /etc
mv maildroprc maildroprc-old
wget http://cvk.hu/mail_szerver/maildroprc.txt
cp maildroprc.txt maildroprc
touch /var/log/maildroprc.log
chown vmail:vmail /var/log/maildroprc.log
cd /etc/logrotate.d/
wget http://cvk.hu/mail_szerver/maildrop.logrotate.txt
mv maildrop.logrotate.txt maildrop
cp -i /etc/postfix/master.cf /etc/postfix/master.cf-$(date +'%y%m%d')
mcedit /etc/postfix/master.cf
Keressük meg a következő sorokat, és cseréljük ki:
#maildrop  unix  -       n       n       -       -       pipe
#  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
maildrop  unix  -       n       n       -       -       pipe
  flags=ODRhu user=vmail:daemon argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop}
  ${extension} ${recipient} ${user} ${nexthop}
postfix stop
postfix start

Courier  beállítása

cd /etc/courier
mv authmysqlrc authmysqlrc~
wget http://cvk.hu/mail_szerver/authmysqlrc.txt
mv authmysqlrc.txt authmysqlrc
sed -i "s/MYSQL_PASSWORD\tpostfix/MYSQL_PASSWORD\tpfix_jelszo/" authmysqlrc
chown daemon:daemon authmysqlrc
chmod 660 authmysqlrc
sed -i 's/authmodulelist="authpam"/authmodulelist="authmysql"/' authdaemonrc
/etc/init.d/courier-authdaemon restart
cp -ip /etc/courier/imapd /etc/courier/imapd~
sed -i 's/SORT QUOTA IDLE/SORT QUOTA AUTH=CRAM-MD5 IDLE/' /etc/courier/imapd
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart

Maildircheck

cp -i /var/www/postfixadmin/ADDITIONS/cleanupdirs.pl /usr/sbin/maildircheck
touch /var/log/maildircheck.log
sed -i "s|/home/vmail|/var/vmail|" /usr/sbin/maildircheck
sed -i "s/removed_maildirs.log/maildircheck.log/" /usr/sbin/maildircheck
sed -i "s/someuser/postfix/" /usr/sbin/maildircheck
sed -i "s/somepass/pfix_jelszo/" /usr/sbin/maildircheck
sed -i "s/      rmtree/#     rmtree/" /usr/sbin/maildircheck
sed -i "s/'\$to_delete'/\$to_delete/" /usr/sbin/maildircheck
sed -i "s/Need to delete/Orphaned/" /usr/sbin/maildircheck
chmod 700 /usr/sbin/maildircheck
cd /etc/logrotate.d
wget http://cvk.hu/mail_szerver/maildircheck.txt
mv maildircheck.txt maildircheck
A következő script 24 óránként törli a Spam mappába került leveleket
cd /etc/cron.daily
wget http://cvk.hu/mail_szerver/rmmailboxspam.txt
mv rmmailboxspam.txt rmmailboxspam
chmod +x rmmailboxspam

SASL és TLS beállítása

Hozzuk létre az smtpd konfigot a következő tartalommal
mcedit /etc/postfix/sasl/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN CRAM-MD5
authdaemond_path: /var/run/courier/authdaemon/socket
auxprop_plugin: sql
sql_hostnames: 127.0.0.1
sql_user: postfix
sql_passwd: pfix_jelszo
sql_database: postfix
sql_select: select clear from mailbox where username = '%u@%r'
cp -i /etc/postfix/main.cf /etc/postfix/main.cf-sasl-elott
postconf -e "broken_sasl_auth_clients = yes"
postconf -e "smtpd_sasl_auth_enable = yes"
postconf -e "smtpd_sasl_local_domain = \$myhostname"
postconf -e "smtpd_sasl_security_options = noanonymous"
postconf -e "smtpd_sasl_authenticated_header = yes"
postconf -e "smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination"
/etc/init.d/postfix restart
mcedit /etc/postfix/master.cf
smtp      inet  n       -       -       -       -       smtpd
  -o smtpd_use_tls=no
  -o smtpd_sasl_auth_enable=no
# -o receive_override_options=no_address_mappings
# If they want to relay, make them use port 587 (submission) or port 465 (smtps)
# If using submission port, configure client to use CRAM-MD5
submission inet n       -       -       -       -       smtpd
  -o smtpd_use_tls=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o receive_override_options=no_address_mappings
# Outlook and OE (and many others) expect smtpd_tls_wrappermode,
# so have them submit here (port 465):
smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o receive_override_options=no_address_mappings
# We will use port 4650 for clients that use STARTTLS:
4650      inet  n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o receive_override_options=no_address_mappings
#628      inet  n       -       -       -       -       qmqpd
/etc/init.d/postfix restart
Így néz ki jelenleg a “postconf -n” kimenete:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = home.cvk.hu, debian.cvk.home, localhost.cvk.home, localhost
mydomain = home.cvk.hu
myhostname = home.cvk.hu
mynetworks = 127.0.0.0/8
myorigin = home.cvk.hu
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.home.cvk.hu.pem
smtpd_tls_cert_file = /etc/postfix/ssl/cert.home.cvk.hu.pem
smtpd_tls_key_file = /etc/postfix/ssl/privkey.home.cvk.hu.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf, hash:/etc/postfix/virtual
virtual_gid_maps = static:6060
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 6060
virtual_transport = maildrop
virtual_uid_maps = static:6060

Az amavisd-new a ClamAV és a SpamAssassin telepítése és beállítása

apt-get install amavisd-new spamassassin razor pyzor lha apt-listchanges nomarch cabextract pax  p7zip
apt-get install clamav clamav-daemon clamav-freshclam
apt-get install arj libio-string-perl libhtml-format-perl libmail-spf-query-perl libnet-dns-perl unrar
gpasswd -a clamav amavis
/etc/init.d/clamav-daemon stop
freshclam
/etc/init.d/clamav-daemon start
sa-update
cd /etc/amavis/conf.d/
sed -i 's/#@bypass_virus_/@bypass_virus_/' 15-content_filter_mode
sed -i 's/#   \\%bypass_vi/   \\%bypass_vi/' 15-content_filter_mode
sed -i 's/#@bypass_spam_/@bypass_spam_/' 15-content_filter_mode
sed -i 's/#   \\%bypass_s/   \\%bypass_s/' 15-content_filter_mode
cat 15-content_filter_mode
amavisd-new reload
cd /usr/sbin
wget http://cvk.hu/mail_szerver/sa-update1.sh.txt
mv sa-update1.sh.txt sa-update.sh
chmod +x sa-update.sh
sa-update.sh
cd /usr/sbin
wget http://cvk.hu/mail_szerver/amavisd-new-trim-whitespace.patch.txt
patch amavisd-new <amavisd-new-trim-whitespace.patch.txt
rm amavisd-new-trim-whitespace.patch.txt
wget http://cvk.hu/mail_szerver/amavisd-new-trim-whitespace.patch2.txt
patch amavisd-new <amavisd-new-trim-whitespace.patch2.txt
rm amavisd-new-trim-whitespace.patch2.txt
crontab -e
PP ÓÓ * * * /usr/sbin/sa-update.sh
Vegyük fel az /etc/amavis/conf.d/50-user fájlba a következőket az “use strict;” és az “1;” közé, és módosítsuk a kiemelt részeket
# nice to have $log_level (1-5) available:
$log_level = 0;
# If sender matches ACL, turn debugging fully up, just for this one message
#@debug_sender_maps = ( ["test\@$mydomain"] );
# explicitly set $mydomain and $myhostname:
$mydomain = 'home.cvk.hu';
$myhostname = 'home.cvk.hu';
# Set number of processes. Rough guide for dual processor, 1GB = 6, 2GB = 12, 4GB = 24
# you MUST also change maxproc for the smtp-amavis transport to match this number, e.g:
# smtp-amavis unix -      -       n       -       6  smtp
$max_servers = 6;
# We discard (and quarantine) viruses, discard (and quarantine) spam (>= kill_level),
# bounce (and quarantine) banned files and pass bad headers:
$final_virus_destiny      = D_DISCARD;
$final_banned_destiny     = D_BOUNCE;
$final_spam_destiny       = D_DISCARD;
$final_bad_header_destiny = D_PASS;
# don't quarantine bad headers (no need since we pass them all):
$bad_header_quarantine_to = undef;
# We use plus addressing to place spam in user's Spam folder:
$recipient_delimiter = '+';
# Spam gets the Subject line prepended with:
$sa_spam_subject_tag = 'Spam> ';
# We tag all headers (for 'local' domains) with X-Spam info:
$sa_tag_level_deflt = undef;
# This is the system default spam tag level that will be overridden by user's preferences in MySQL
$sa_tag2_level_deflt = 6.31;
## For relay domains not set up in MySQL you can create a static domain wide (or individual) map:
#@spam_tag2_level_maps = (
#  { '[email protected]' => 99.0,
#    '.example.net' => 8.0,
#    '.example.org' => 6.0 },
#  \$sa_tag2_level_deflt,   # catchall default
#);
# The default is to not quarantine any spam (outside of what users get in their Spam folder),
# so set default kill_level high. Users can choose their own kill_level however. kill_level
# will trigger quarantining (to MailZu).
$sa_kill_level_deflt = 9999;
## Once again, relay domains may want something different:
#@spam_kill_level_maps = (
#  { '[email protected]' => 99.0,
#    '.example.net' => 8.0,
#    '.example.org' => 10.0 },
#  \$sa_kill_level_deflt,   # catchall default
#);
## And some relay domains may wish to quarantine up to a certain level, then discard:
#@spam_quarantine_cutoff_level_maps = (
#  { '.example.net' => 20.5,
#    '.example.org' => 25 },
#  \$sa_quarantine_cutoff_level,   # catchall default (currently undef)
#);
# We will quarantine viruses to /var/lib/amavis/virusmails (the default).
# We will use a cron job to automatically delete these files older than 14 days from the quarantine.
# We can use amavisd-release or MailZu to release quarantined messages. We warn the recipients
# and expect them to contact us (via the MailZu interface) if they need a banned file released.
# Each domain can have their own administrators.
@virus_admin_maps = ({
    '.home.cvk.hu' => 'postmaster@home.cvk.hu',
    '.' => 'postmaster@home.cvk.hu',
    });
@banned_admin_maps = ({
    '.home.cvk.hu' => 'postmaster@home.cvk.hu',
    '.' => 'postmaster@home.cvk.hu',
    });
$warnbannedrecip = 1;
$defang_banned = 1;
# recipient's local address(es) will be rewritten to user+spam when spam exceeds tag2_level
# and as a result will be delivered to their Spam folder (thanks to maildrop)
@addr_extension_spam_maps = ('spam');
# list domains in an external file (created by local_domains.sh script):
@local_domains_maps = ( read_hash("$MYHOME/local_domains") );
# Since we configured SQL, we can use penpals feature:
$penpals_bonus_score = 5;
$penpals_threshold_low = 1;
$penpals_threshold_high = 18;
# We are going to create policy banks that will notify us of internally created spam
# but also let banned files out (provided they are compressed).
@mynetworks = qw( 127.0.0.0/8 [::1] [FE80::]/10 [FEC0::]/10
                   10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 );
$inet_socket_port = [10024, 10026];
## If using Mailzu, use this instead:
#$inet_socket_port = [10024, 10026, 9998]; 
$inet_socket_bind = '127.0.0.1';
## If using Mailzu, use this instead:
#$inet_socket_bind = undef;
## Interface to MailZu
#$interface_policy{'9998'} = 'MAILZU';
#$policy_bank{'MAILZU'} = {
#    protocol => 'AM.PDP',
#    inet_acl => [qw( 127.0.0.1 [::1] 84.21.23.173 )],
#};
# We create a custom set of banned rules for the MYNETS and TRUSTED policy
# banks. See also the 'DEFAULT' $banned_filename_re settings in 20-debian_defaults
%banned_rules = (
 'BLOCK_EXE' =>  new_RE(
    # block double extensions in names:
      qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i,
    # allow any name or type (except viruses) within an archive:
      [ qr'^\.(Z|gz|bz2|rpm|cpio|tar|zip|rar|arc|arj|zoo)$' => 0],
    # blocks MS executable file(1) types, unless allowed above:
      qr'^\.(exe|exe-ms)$',
    ),
 'DEFAULT' => $banned_filename_re,
);   
$policy_bank{'MYNETS'} = {  # mail originating from @mynetworks
  spam_admin_maps  => ["postmaster\@$mydomain"], # alert of internal spam
  final_spam_destiny => D_BOUNCE, # so the sender knows they are a spammer
  spam_kill_level_maps => [10.0],
  spam_dsn_cutoff_level_maps => [9999],
  banned_filename_maps => ['BLOCK_EXE'],
};
$interface_policy{'10026'} = 'TRUSTED';
$policy_bank{'TRUSTED'} = {  # mail originating from trusted senders
  spam_admin_maps  => ["postmaster\@$mydomain"], # alert of internal spam
  final_spam_destiny => D_BOUNCE, # so the sender knows they are a spammer
  spam_kill_level_maps => [10.0],
  spam_dsn_cutoff_level_maps => [9999],
  banned_filename_maps => ['BLOCK_EXE'],
};
# Here we set up access to MySQL data:
@lookup_sql_dsn = ( ['DBI:mysql:amavis:localhost', 'amavis', 'amavis_jelszo'] );
@storage_sql_dsn = @lookup_sql_dsn;
# If using MailZu, store banned files and spam to MySQL if you want to give users the
# ability to read those messages in the MailZu interface:
#$banned_files_quarantine_method = 'sql:';
#$spam_quarantine_method         = 'sql:';
# If using MailZu and you do not wish to quarantine spam to MySQL but instead want to
# quarantine to /var/lib/amavis/virusmails, MailZu cannot have spam messages
# compressed (which is the default), so you would have to change from the default to this:
#$spam_quarantine_method         = 'local:spam-%m';
# Note: If you quarantine items locally, you would also need to create a script delete
# old quarantined items. Look to /etc/cron.daily/rmvirusquar for an example
# required because we set msgs.time_iso to type TIMESTAMP (required by MailZu)
$timestamp_fmt_mysql = 1;
# specific to the amavisnewsql SquirrelMail plugin
$sql_select_white_black_list = 'SELECT wb FROM wblist'.
  ' WHERE (rid=?) AND (wblist.email IN (%k))'.
  ' ORDER BY wblist.priority DESC';
#----------------------------------------------------------
cd wget http://cvk.hu/mail_szerver/amavis-sqmail.sql.txt
sed -i "s/BY 'password'/BY 'amavis_jelszo'/" amavis-sqmail.sql.txt
chmod 600 amavis-sqmail.sql.txt
mysql -u root -p < amavis-sqmail.sql.txt
chmod 640 /etc/amavis/conf.d/50-user
Hozzuk létre az alábbi scriptet:
mcedit /usr/sbin/local_domains.sh
#!/bin/bash
mysql -upostfix -ppfix_jelszo postfix -B -N -e "select concat('.',domain) from domain" >/var/lib/amavis/local_domains
chmod 700 /usr/sbin/local_domains.sh
local_domains.sh
cat /var/lib/amavis/local_domains
mcedit /etc/sudoers
www-data debian=NOPASSWD: /usr/sbin/local_domains.sh
Frissítsük le a PostfixAdmint:
cd /var/www/postfixadmin/admin
cp edit-domain.php edit-domain.php.original
wget http://cvk.hu/mail_szerver/domain.patch.txt
patch -p0 < domain.patch.txt
chown root:www-data *
amavisd-new reload
cd /usr/sbin
wget http://cvk.hu/mail_szerver/trim-amavis-msgs.txt
mv trim-amavis-msgs.txt trim-amavis-msgs
sed -i 's/Passw0rd/amavis_jelszo/' trim-amavis-msgs
chmod 750 trim-amavis-msgs
cd /etc
wget http://cvk.hu/mail_szerver/trim-amavis.sql.txt
mv trim-amavis.sql.txt trim-amavis.sql
cd /etc/cron.daily/
wget http://cvk.hu/mail_szerver/trim-amavis.txt
mv trim-amavis.txt ztrim-amavis
sed -i 's/password/amavis_jelszo/' ztrim-amavis
chmod 750 ztrim-amavis
./ztrim-amavis
Most bekonfiguráljuk a postfixet, hogy az amavis al működjön:
mcedit /etc/postfix/master.cf
smtp      inet  n       -       -       -       -       smtpd
  -o smtpd_use_tls=no
  -o smtpd_sasl_auth_enable=no
  -o content_filter=smtp-amavis:[127.0.0.1]:10024
# -o receive_override_options=no_address_mappings
# If they want to relay, make them use port 587 (submission) or port 465 (smtps)
# If using submission port, configure client to use CRAM-MD5
submission inet n       -       -       -       -       smtpd
  -o smtpd_use_tls=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o content_filter=smtp-amavis:[127.0.0.1]:10026
# -o receive_override_options=no_address_mappings
# Outlook and OE (and many others) expect smtpd_tls_wrappermode,
# so have them submit here (PORT 465):
smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o content_filter=smtp-amavis:[127.0.0.1]:10026
# -o receive_override_options=no_address_mappings
# We will use port 4650 for clients that use STARTTLS:
4650     inet  n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o content_filter=smtp-amavis:[127.0.0.1]:10026
# -o receive_override_options=no_address_mappings
#628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
  -o content_filter=
smtp-amavis unix -    -    n    -    6    smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
127.0.0.1:10025 inet n    -    n    -    -    smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=reject_unauth_pipelining
    -o smtpd_end_of_data_restrictions=
    -o mynetworks=127.0.0.0/8
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
postconf -e "recipient_delimiter = +"
/etc/init.d/postfix restart
Pyzor konfigurálása
pyzor discover
su amavis -c 'pyzor discover'
echo "82.94.255.100:24441" > /var/lib/amavis/.pyzor/servers
echo "82.94.255.100:24441" > /root/.pyzor/servers
su amavis -c 'pyzor ping'
A pingre OK választ kell kapni. Ha mégsem, akkor egy tűzfal blokkolja valahol. amavisd-nanny beállítása:
cd /usr/local/src
wget http://www.ijs.si/software/amavisd/amavisd-new-2.4.2.tar.gz
tar xzf amavisd-new-2.4.2.tar.gz
cp amavisd-new-2.4.2/amavisd-release /usr/sbin
cp amavisd-new-2.4.2/amavisd-nanny /usr/sbin
sed -i 's|/var/amavis/amavisd.sock|/var/run/amavis/amavisd.sock|' /usr/sbin/amavisd-release
sed -i 's|/var/amavis/db|/var/lib/amavis/db|' /usr/sbin/amavisd-nanny

SpamAssassin tanítása

mcedit /etc/spamassassin/local.cf
# explicitly set our internal_networks (might be the same or similar to mynetworks)
clear_internal_networks
internal_networks 192.168.1.0/24
# add the same to trusted_networks, and possibly other computers/networks whose mail we trust
clear_trusted_networks
trusted_networks 192.168.1.0/24
spamassassin --lint
amavisd-new stop
amavisd-new start
cd /etc/cron.daily
wget http://cvk.hu/mail_szerver/rmvirusquar.txt
mv rmvirusquar.txt rmvirusquar
chmod +x rmvirusquar
./rmvirusquar

Bayes és AWL táblák beállítása a MySQL ben:

cd /etc/spamassassin/
wget http://cvk.hu/mail_szerver/gv-bayes-awl.sql.txt
sed -i 's/paSSw0rd/amavis_jelszo/' gv-bayes-awl.sql.txt
mysql -u root -p < gv-bayes-awl.sql.txt
rm gv-bayes-awl.sql.txt
wget http://cvk.hu/mail_szerver/local.cf-bayes-awl.txt
cp local.cf local.cf-before-mysql
cat local.cf-bayes-awl.txt local.cf-before-mysql > local.cf
sed -i 's/paSSw0rd/amavis_jelszo/' local.cf
spamassassin --lint
amavisd-new reload
cd
wget http://cvk.hu/mail_szerver/sample-spam.txt
sa-learn --spam sample-spam.txt
sa-learn --dump magic
spamassassin --lint
su amavis -c 'spamassassin <sample-spam.txt'
cd /etc
wget http://cvk.hu/mail_szerver/trim-awl.sql.txt
mv trim-awl.sql.txt trim-awl.sql
cd /usr/sbin
wget http://cvk.hu/mail_szerver/trim-awl.txt
mv trim-awl.txt trim-awl
chmod +x trim-awl
sed -i 's/paSSw0rd/amavis_jelszo/' trim-awl
cd /etc/cron.weekly/
wget http://cvk.hu/mail_szerver/trim-sql-awl-weekly.txt
mv trim-sql-awl-weekly.txt trim-sql-awl-weekly
chmod +x trim-sql-awl-weekly
su - amavis /usr/sbin/trim-awl
./trim-sql-awl-weekly

A SquirrelMail konfigurálása

echo "Include /etc/squirrelmail/apache.conf" >> /etc/apache-ssl/httpd.conf
cd /etc/squirrelmail/
sed -i "s|Alias /squirrelmail|Alias /mail|" apache.conf
sed -i "s|allow from 127.0.0.1|allow from 192.168.1.0/24|" apache.conf

/etc/init.d/apache-ssl restart

cd /usr/share/squirrelmail/plugins/
wget http://www.squirrelmail.org/plugins/quota_usage-1.3.1-1.2.7.tar.gz
tar xzf quota_usage-1.3.1-1.2.7.tar.gz
cp quota_usage/config.php.sample quota_usage/config.php
wget http://www.squirrelmail.org/plugins/timeout_user-1.1.1-0.5.tar.gz
tar xzf timeout_user-1.1.1-0.5.tar.gz
wget http://www.squirrelmail.org/plugins/compatibility-2.0.7-1.0.tar.gz
tar xzf compatibility-2.0.7-1.0.tar.gz
wget http://www.squirrelmail.org/plugins/amavisnewsql-0.8.0-1.4.tar.gz
tar xzf amavisnewsql-0.8.0-1.4.tar.gz
mkdir /var/lib/amavis/.notstored
chown -R amavis:amavis /var/lib/amavis
sed -i 's/minutes = 120;/minutes = 20;/' timeout_user/config.php
cd amavisnewsql
cp config.php.dist config.php

sed -i 's|pgsql://postgres:@localhost|mysql://amavis:amavis_jelszo@localhost|' config.php
sed -i 's|"yourdomain.com"|"home.cvk.hu"|' config.php
sed -i 's|use_quarantine"] = true|use_quarantine"] = false|' config.php
sed -i 's|http://webmail.yourdomain.com|https://home.cvk.hu/mail|' config.php
sed -i 's|[email protected]|noreply@home.cvk.hu|' config.php
sed -i 's|/htdocs/squirrel/|/usr/share/squirrelmail/|' utils/cleanquarantine.php
sed -i 's|/htdocs/squirrel/|/usr/share/squirrelmail/|' utils/generatedigest.php
sed -i 's|/htdocs/squirrel/|/usr/share/squirrelmail/|' utils/process_bsmtp.php
sed -i 's|/var/virusmails|/var/lib/amavis/virusmails|' utils/process_bsmtp.php
chown -R root:root /usr/share/squirrelmail/plugins/amavisnewsql
chmod 644 *
chmod 755 contrib htmlMimeMail-2.5.1 locale po utils
chmod 640 contrib/*
chmod 640 htmlMimeMail-2.5.1/*
chmod 640 utils/soap/*
chmod 640 utils/*php
chmod 640 utils/*sql
chmod 640 config.php
chown root:www-data config.php

wget http://cvk.hu/mail_szerver/amavisnewsql.patch1.txt
sed -i 's/host.domain.tld/home.cvk.hu/' amavisnewsql.patch1.txt
cp -p functions.php functions.php.original
cp -p amavisnewsql.class.php amavisnewsql.class.php.original
cp -p amavisnewsql.php amavisnewsql.php.original
patch -p0 < amavisnewsql.patch1.txt

squirrelmail-configure
1. Organization preferences.

 1.  Organization Name home.cvk.hu

 7.  Provider link https://home.cvk.hu/mail/

4.  General Options

 5.  Usernames in Lowercase true

 7.  Hide SM attributions  true

 10. Allow server thread sort true

 11. Allow server-side sorting true

D.  Set pre-defined settings for specific IMAP servers courier

8.  Plugins

 Plugins

  Installed Plugins

   1. amavisnewsql

   2. quota_usage

   3. timeout_user

S   Save data
Q   Quit
A következő címen ellenőrizhetjük, hogy minden beállítás rendben van-e. https://home.cvk.hu/mail/src/configtest.php

Razor beállítása

cd
rm /etc/razor/razor-agent.conf
razor-admin -create
razor-admin -create
razor-admin -register

sed -i 's/= 3/= 0/' /root/.razor/razor-agent.conf
cp -r /root/.razor /var/lib/amavis
chown -R amavis:amavis /var/lib/amavis

pflogsumm beállítása

apt-get install pflogsumm

cd /etc/cron.daily
wget http://cvk.hu/mail_szerver/pflogsumm.sh
sed -i 's|DAILY mail|DAILY debian mail|' pflogsumm.sh
mv pflogsumm.sh pflogsumm
chmod +x pflogsumm

Kiegészítő postfix beállítások

postmap /etc/postfix/sender_access
postmap /etc/postfix/rbl_client_exceptions
postmap /etc/postfix/rbl_sender_exceptions
postmap /etc/postfix/rbl_recipient_exceptions
postmap /etc/postfix/reject_over_quota

cp /etc/postfix/main.cf /etc/postfix/main.cf-valtoztatasok
postconf -e "smtpd_hard_error_limit = 10"
postconf -e "smtpd_soft_error_limit = 8"
postconf -e "smtpd_helo_required = yes"
postconf -e "smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access, reject_non_fqdn_sender, reject_unknown_sender_domain"
postconf -e "smtpd_data_restrictions = reject_unauth_pipelining"
postconf -e "smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_unlisted_recipient, check_recipient_access hash:/etc/postfix/reject_over_quota, check_sender_access hash:/etc/postfix/rbl_sender_exceptions, check_client_access hash:/etc/postfix/rbl_client_exceptions, check_recipient_access hash:/etc/postfix/rbl_recipient_exceptions, reject_rbl_client sbl-xbl.spamhaus.org"
/etc/init.d/postfix restart
tail -f /var/log/mail.log

Egy kis riport naponta a levelekről:
mcedit /etc/cron.d/qshape-cron
PATH=/usr/sbin
50 6 * * * postfix /usr/sbin/qshape incoming active deferred 2>&1 |/usr/bin/mail -s "qshape debian" root
Egy ripot naponta a logcheck állapotáról:
echo "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ postfix/pickup\[[0-9]+\]: [[:alnum:]]+: uid=[0-4]+ from=<postfix>" >>/etc/logcheck/ignore.d.server/postfix
A memória limit megemelése 48M ra:
sed -i 's/memory_limit = 16M/memory_limit = 48M/' /etc/php5/apache/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 48M/' /etc/php5/apache/php.ini
/etc/init.d/apache-ssl restart
postconf -e "message_size_limit = 40960000"
/etc/init.d/postfix restart
postconf message_size_limit
grep memory_limit /etc/php5/apache/php.ini
Az esetleges kiegészítésekkel ha le sz időm, majd érkezni fog a folytatás, illetve a telepítés átrakása ubuntu linux rendszerre.
Share this Post