mail.hosting.cldn.cz
big header
Architecture overview (mail)
Services access information
MariaDB:
| Account | Password | Database | Description | |
| root | 1:kdGLpIvdk6OepZGl0ZyIm97bhJrp | -all- | -all- | |
| rc_uzzdb1 | 1:FikqBil4G3R7OgkFey17JRsWIQBM | rc_bddb1 | Roundcube main | |
| spamassassin | 1:eUgme0d4cyMnR394eSdKYXNcImUQ | sa_bayes | Spamassassin Bayes for all domains | |
Testovaci domena a mailove ucty:
| Ucet | Domena | Heslo | Aliasy uzivatele | Aliasy domeny |
| cldn | hosting.cldn.cz | 1:JBFATkREHgc0PBQYRBYvLXc= | postmaster | hosting.cldn.eu |
| cldd | hosting.cldn.cz | 1:/tvd1tHIyomKi7g= | hosting.cldn.eu | |
| tester | hosting.cldn.cz | 1:URBUVQhbWhsCCWM= | hosting.cldn.eu |
Services list with short description
Dovecot ; as MDA (local storage delivery, pop3 and imap) and auth provider for postfix
Dovecot-pigeonhole ; implements managesieve protocol for sorting and filtering mail during delivery
Postfix ; as MTA
Amavis ; as the interface between Postfix and mail content checkers - Spamassassin , Clamd , ESETs (only on some installations)
Spamassassin ; content filter - spam-checker, applies serveral types of checks to the mail headers and it's content to determine whether to mark mail as spam. Scores are overridden by amavis rules
Clamd ; content filter - antivirus, checks mail content for virus signatures
ESET ; content filter - antivirus, checks mail content for virus signatures
OpenDKIM ; implementation of DKIM (Domain Keys Identified Mail) sender authentication system - milter-based filter application that can plug in to any milter-aware MTA
Roundcubemail ; webmail php application run inside php-fpm pool and provided by nginx web server
php-fpm ; alternative php FastCGI inplementation
nginx ; webserver
mariadb ; fork of MySQL , hosts databaes for roundcubemail and spamassasin bayes checker (with signatures held per-domain basis)
fail2ban ; scans log files and bans IP addresses that makes too many password attempts by applying iptables rules
Scripts list with short description
/usr/local/scripts/LDAP/ldap-scripts/ldadomain ; python script to work with domain ldap entries, run manually
/usr/local/scripts/LDAP/ldap-scripts/ldauser ; python script to work with domain user entries, run manually
/usr/local/scripts/mail/sa-learn ; goes trhough spam folders of each mailbox and processes mails to the bayes database, run by cron or manually
/usr/local/scripts/mail/sa-clean ; goes through spam folders of each mailbox and removes all spams older than 30 days, run by cron or manually
Uprava konfigurace SA a Amavisu.
1. Uprava score per user: Pridat k uctu objectclass amavisAccount a nastavit amavisSpamTag2Level.
Migration procedure for old mailservers
Postup migrace domeny/schranek z mail.netmax.cz
Kroky ve zkratce (detailni popis nasleduje)
- Priprava k migraci (provadi se nekolik dnu pred samotnou migraci)
- (s) Rozeslat mailing vsem uzivatelum migrovane domeny, aby vedeli, ze se migrace chysta
- Upravit TTL pro MX zaznam na DNS serveru a nastavit hodnotu na 300 (5 min), nebo mensi
- Migrace
- (n) Zalozit domenu v novem ldap serveru
- (n) Zmigrovat ldap zaznamy
- Pripravit databazi pro bayes spamassassinu (2 moznosti)
- (sn) Zmigrovat existujici databazi
- (n) Zalozit databazi pomoci example souboru
- (n) Vytvorit slozku pro maily do niz mailserver nebude moci zapsat
- (s) Nastavit na starem mailserveru preposilani mailu
- (n) Zmigrovat schranky
- Upravit DNS zaznam pro mx
- Upravit DNS zaznam pro DKIM Domain Key
Kroky detailne
1. Priprava k migraci (provadi se nekolik dnu pred samotnou migraci)
1.1 (s) Rozeslat mailing vsem uzivatelum migrovane domeny, aby vedeli, ze se migrace chysta:
Bash skript 'migration-warning' rozesilajici mailing se nachazi v /usr/local/scripts/mail/ na mailserveru netmaxu
Ve stejne slozce je i soubor migration-text.eml, ktery skript nacita jako textovou predlohu se samotnou zpravou.
Udaje o uzivatelich, jimz se bude posilat upozorneni se nacitaji primo z ldapu.
Skript bere dva parametry, <domena> a <datum>
<domena> je nazev domeny kterou budeme migrovat,
<datum> je datum, ktery se zobrazi zakaznikovi v mailu, kdy bude migrace probihat
Priklad pusteni:
bash /usr/local/scripts/mail/migration-warning "cldn.cz" "16.12.2014"
1.2 Upravit TTL pro MX zaznam na DNS serveru a nastavit hodnotu na 300 (5 min), nebo mensi
Uprava se provadi na prislusnem nameserveru.
Pokud se jedna o PowerDNS se zaznamy v ldapu, pod udaj mail.<domena>.cz prida atribut dNSTTL s hodnotou 300
Pokud se jedna o Bind s textovym konfigurakem, zaznam bude vypadat nasledovne:
mail 300 IN A 109.205.75.37
2. Migrace
2.1 Zalozeni domeny na novem mailserveru
Python skript 'ldadomain' vytvarejici top-level zaznam pro domenu se nachazi v /usr/local/scripts/LDAP/ldap-scripts na mailserveru mail.hosting.cldn.cz
Ve stejne sloze se nachazi konfiguracni soubor ldap.ini v nemz jsou ulozeny parametry pro spojeni s ldap serverem
Skript vytvori zaznam ve tvaru dc=<domena>,dc=domains,dc=hosting,dc=cldn,dc=cz v ldapu
Zaroven private, public klice a txt zaznam pro opendkim a umisti je jako /etc/pki/opendkim/{private,certs,txt}/<domena>.{key,pem,txt}
Pro zalozeni domeny bere skript tri paramentry, add <domena> <majitel domeny>
add - je klicove slovo pro pridani zaznamu, skript umi take mazat, klicove slovo - del
<domena> je porad tataz domena, ktera se migruje
<majitel domeny> je nazev spolecnosti, ktera tuto domenu vlastni/pouziva, usnadni to vyhledavani v budoucnu a mozna bude pouzite v billingu. Parametr je povinny, kdyz nevite co napsat, piste "Example".
Priklad pusteni:
python /usr/local/scripts/LDAP/ldap-scripts/ldadomain add "cldn.cz" "Cluster Design s.r.o."
2.2 Migrace ldap zaznamu
Python skript 'ldapmigrate' se nachazi v /usr/local/scripts/LDAP/ldap-scripts na mailserveru mail.hosting.cldn.cz
Skript se pripoji na stary ldap, nacte strom pozadovane domeny, uvnitr prepracuje a zapise upravene hodnoty do stromu ldapu noveho. Skript kontroluje, zda vychozi a cilova domena ve prislusnych ldap serverech existuji a kontroluje, zda ma domena do niz se migruje, jiz nejake uzivatelske ucty, pokud ano, migraci zamitne (urcen je na migraci nacisto).
bere jeden parameter <domena>
<domena> je porad tataz domena, ktera se migruje
Priklad pusteni:
python /usr/local/scripts/LDAP/ldap-scripts/ldamigrate "cldn.cz"
2.3 Priprava databazi pro bayes spamassassinu
2.3.a Backup-restore databaze z mail.netmax.cz
Pokud na netmaxu je zakaznicka bayes databaze, udela se jeji dump, prenese na novy mailserver a udela se restore.
Priklad:
1. Na mail.netmax.cz:
su spamassassin -c 'sa-learn --dbpath /var/lib/spamassassin/configs/cldn.cz/ --backup > /tmp/sa-cldncz-dump'
2. Na mail.hosting.cldn.cz
scp root@192.168.10.102:/tmp/sa-cldncz-dump /tmp/ su amavis -s /bin/bash -c 'sa-learn -u cldn.cz --restore /tmp/sa-cldncz-dump'
2.3.b Zalozeni databaze na mail.hosting.cldn.cz
Pokud na netmaxu databaze neni, zalozi se nova
Priklad:
su amavis -s /bin/bash -c 'sa-learn -u cldn.cz --spam ~/gtube.txt'
2.4 Vytvorit slozku pro maily ve formatu /home/<domena> na serveru mail.hosting.cldn.cz s pravy root:root ; umask 077,
timto je znemozneno dovecotu dorucovat prichozi postu do schranky (schranky jeste nemame), a mail serveru bude vracet 451, takze pokud odesilaci server se bude chovat jak ma, nic se neztrati
Priklad:
mkdir -p /home/cldn.cz chown root:root /home/cldn.cz chmod 700 /home/cldn.cz
2.5 Nastavit na starem mailserveru preposilani mailu
Transportni pravidlo pro courier se nastavuje v /etc/courier/esmtproutes na mail.netmax.cz,
format:
<domena>: [<cilova ip adresa>]
Courier tento soubor pouziva pri kazdem dorucovani, proto je aktivovano okamzite, ale...
Zaroven s pustenim transport pravidla je potreba zakomentovat v /etc/courier/hosteddomains/<domena> radky pro prijem mailu na teto domene, jinak courier bude dorucovat lokalne dal, a pustit "makehosteddomains". Nasledne restart couriera.
Priklad:
sed -i '1i <cldn.cz>: [109.205.75.91]' /etc/courier/esmtproutes sed -i 's/^/#/g' /etc/courier/hosteddomains/cldn.cz makehosteddomains service courier restart
V tomto okamziku posta stale chodi na stary mailserver, ale je preposilana na mailserver novy, ktery ji prijme (mame ldap zaznam), ale hodi 451 a nedoruci (dovecot nema pravo na zapis do slozky).
2.6 Migrace schranek
Bash skript 'get-maildirs' ktery migruje schranky se nachazi v /usr/local/scripts/mail/ na mail.hosting.cldn.cz
Ve stejne slozce je i perl skript napsany autorem dovecotu, ktery migruje flagy a serial data o mailech z formatu courieru do formatu dovecotu.
Bash skript se postara o stazeni slozek s mailama do tempu, spravne zavolani perloveho skrtiptu, ocisteni slozek po konvertaci a umisteni do /home/<domena>, zaroveni nastavi prava tak, ze dovecot zacne dorucovat
Skript bere dva parametry, <domena> <top-domena>.
<domena> je porad tataz domena, ktera se migruje
<top-domena> je historicke umisteni postovni domeny pod prvni domenou zakaznika. V praxi to znamena ze pod <top-domena> <uvt.cz> se skryvaji <domena> <cldn.cz><bosson.cz><cluster-design.cz> atd.
Priklad spusteni:
bash /usr/local/scripts/mail/get-maildirs "cldn.cz" "uvt.cz"
2.7 Uprava DNS zaznamu pro mx
dns zaznam pro mx domeny se ma zmenit z 109.205.75.37 na 109.205.75.91 pro ipv4
a zaroven se muze pridat AAAA zaznam 2a00:1238:4:10::170 pro ipv6
Priklad pro bind:
mail 300 IN A 109.205.75.91 mail 300 IN AAAA 2a00:1238:4:10::170
2.8 Uprava DNS zaznamu pro DKIM Domain Key
Je potreba vytvorit zaznam ve tvaru mail._domainkey.<domena> s polozkou TXTRecord, ktery vytvoril ldadomain ve druhem kroku
TXTRecord bude ulozen v /etc/pki/opendkim/txt/<domena>.txt na mail.hosting.cldn.cz
Priklad:
cat /etc/pki/opendkim/txt/cldn.cz.txt
Priklad pro bind:
mail._domainkey IN TXT "v=DKIM1; k=rsa; t=y:s; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArSgW61f5Sa42yqVuRACt2fh9Kr7FmhZ6Gbugut8XGdUIBcQzU2UAKDLOUrKZZsfHEWmDyliqKXOFlWx/+/PpIntsSE1ah6C6k3dTz4C7UncrkG+62ZN8tIZQ14xfM8csIO8SkzqRi//vEfILcpXMJj+4uUgukrNB4iaAiXsE5hfa4/SjP8FVv6GtDpDORt2h9dqSLpqNSkVDKXS/SWInj8msNBRMnHEhJMX+Cy7GxxsxHvZyTVV+OZdIQC4LvB4wWeiisvIj4v3oE1NZe/aeKdwz/3LkIzNKp0sYrP3t0gYjN4lYEiatda7utOx2aYn9g57PbQlRkIfBUDLQxz45JwIDAQAB"