Linux ako Mail Server I.

18.09.2014 08:35 | Články | Andrej Lacho

O čo vlastne pôjde?

Inštalácia a konfigurácia PostFix SMTP servera na CentOS verzia 6.5, spolu so Squid, Shorewall, Clamav, Amavis, Squiremail webmail, Dovecot a veľa ďalších zaujímavých sľužieb.

Začneme základným nastavením servera ktoré som už popisoval vo svojom blogu: http://linuxos.sk/blog/manjaro-arch-pre-lenivcov/detail/ako-na-kvm-virtualizacia-na-servery/

Asi polovica je venovaná práve tomu základnému nastaveniu servera.

Ak máme všetko nastavené tak prejdeme k ďalším krokom.

Pridáme repozitár RPMForge do hlavného repozitára

yum install -y centos-release-cr

Pre 32-bit:

rpm -ivh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

a pre 64-bit:

rpm -ivh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

Inštalácia NTP

NTP slúži na synchronizáciu času medzi servermi internetu.

yum install -y ntp

ntpdate tik.cesnet.cz
service ntpd start
chkconfig ntpd on

Inštalácia SQUID - proxy servera

Keš proxy pre web, redukuje vyťaženie linky a zrýchli odozvu.

yum install -y squid

service squid start
chkconfig squid on

Inštalácia Shorewall

Shorewall je výborný a mocný nástroj ktorý nesmie chýbať na žiadnom linuxovom firewalle. Dávam ho sem z bezpečnostných dôvodov. Nebudeme písať žiadne obsiahle pravidlá.

yum install -y shorewall

Základná konfigurácia Shorewall

          Interfaces

          net     eth0    detect      tcpflags,nosmurfs
          loc     eth1    detect      tcpflags,nosmurfs

          Zones

          fw      firewall
          net     ipv4
          loc     ipv4

          Masq

          eth1    eth0

          Policy

 $FW     all     ACCEPT

          net     $FW     DROP            info
          net     loc     DROP            info

          loc     net     REJECT          info
          loc     $FW     ACCEPT

          all     all     REJECT          info

Inštalácia Postfix

Samotný mail server.

yum install -y postfix cyrus-sasl cyrus-sasl-md5 cyrus-sasl-plain pfqueue --enablerepo=rpmforge

Inštalácia, konfigurácia a spustenie Clamav

ClamAV je slobodný štandard pre poštové serveri na skenovanie softvéru (antivírus).

yum install -y clamav clamav-db clamd --enablerepo=rpmforge
mv /etc/cron.daily/freshclam /usr/local/bin/freshclam.sh

Pridať do Crontab riadok na updatovanie clamav

# kazde 2 hodiny aktualizuj clamav cez freshclam.sh
15 */2 * * * /usr/local/bin/freshclam.sh > /dev/null 2>&1

Nahrať config clamd.conf

/usr/local/bin/freshclam.sh
service clamd start
chkconfig clamd on
gpasswd -a clamav amavis

Inštalácia, konfigurácia a spustenie Amavis

Amavis emailový vírusový skener  je spoľahlivý nástroj napísaný v Perly a stojí medzi Vašim Postfixom a filtrami obsahu v podobe SpamAssassinu a ClamAV.

yum install -y amavisd-new --enablerepo=rpmforge

Upraviť riadky v /etc/amavisd.conf

$mydomain = 'domena.sk';
$myhostname = 'mail.domena.sk';
@mynetworks = qw( 127.0.0.0/8 [::1] [FE80::]/10 [FEC0::]/10
                 192.168.2.0/24 );

$sa_tag_level_deflt  = undef;   # minimalne skore, aby pridal hlavicku
X-SPAM (undef, alebo zaporna hodnota = vloz hlavicku do vsetkych sprav)
$sa_tag2_level_deflt = 5;       # minimalne skore, aby bola sprava oznacena
ako SPAM => X-Spam-Status: Yes
$sa_kill_level_deflt = 8;       # hodnota,kedy uz mail nedojde prijemcovi, ale ulozi sa do karanteny (v tomto pripade sa vsetky maily so skore > 8 daju do karanteny)
$mailfrom_notify_admin     = "postmaster\@$mydomain";   # adresa odosielatela, ked sa odosle varovanie pre admina
$mailfrom_notify_recip     = "postmaster\@$mydomain";   # adresa odosielatela, ked sa odosle varovanie odosielatelovi spravy
$mailfrom_notify_spamadmin = "postmaster\@$mydomain";   # adresa odosielattela, ak je sprava spam
$sa_spam_subject_tag = 'SPAM: ';        #  do predmetu prav, ktore su spam, prida SPAM:
# D_PASS        - prijemca dostane spravu
# D_DISCARD     - prijemca nedostane spravu; odosielatel nie je informovany o nedoruceni spravy, sprava sa ulozi do karanteny, ak je nastavena
# D_BOUNCE      - prijemca nedostane spravu; odosielatel dostane spravu o nedoruceni
$final_virus_destiny      = D_DISCARD;  # ak sa najde virus, co spravit (DISCARD = karantena)
$final_banned_destiny     = D_BOUNCE;   # ak je v maily nedovolena priloha (BOUNCE = sprava odosielatelovi)
$final_spam_destiny       = D_DISCARD;  # ak je spam (DISCARD = karantena)
$final_bad_header_destiny = D_PASS;     # ak je zla hlavicka (PASS = to je ok)

Odkomentujeme:

['ClamAV-clamd',
   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
   qr/\bOK$/m, qr/\bFOUND$/m,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],

Pridáme riadok do /etc/postfix/main.cf ktorý zabezpečí kontrolovanie obsahu správ Amavisom

content_filter = smtp-amavis:[localhost]:10024

Pridame par riadkov do /etc/postfix/master.cf

#
# AMAVISD-NEW Content Filter (ClamAV, Spamassassin, Razor2, DCC, Pyzor)
#
smtp-amavis     unix    -       -       n       -       2       smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o max_use=20

127.0.0.1:10025 inet n  -       n       -       -  smtpd
    -o content_filter=
    -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 smtpd_milters=
    -o local_header_rewrite_clients=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o receive_override_options=no_address_mappings,no_header_body_checks,no_unknown_recipient_checks

# Transporty pouzite na auto ucenie SA z forwardnutych mailov uzivatelov
# prikaz sa-wrapper.pl vytiahne z prilohy rfc822 originalny mail a preposle ho prikazu sa-learn, ktory uci SA
sa-spam unix    -       n       n       -       -       pipe user=amavis:amavis argv=/usr/local/bin/sa-wrapper.pl spam ${sender}
sa-ham  unix    -       n       n       -       -       pipe user=amavis:amavis argv=/usr/local/bin/sa-wrapper.pl ham  ${sender}

Už len pridáme užívateľa clamav do skupiny amavis, spustíme po štarte a zapneme službu

gpasswd -a clamav amavis
chkconfig amavisd on
service amavisd start

Spamassassin

Zaisťuje kontrolu obsahu, je to najrozšírenejšie antispamové riešenie v linuxovom svete. Pracuje tak ze na základe sady pravidieľ overuje príchodziu poštu. V prípade že konkretnym pravidlám mail vyhovie, upraviísa jeho celkové skóre o počet bodov ktoré náleží danému pravidlu.

Niektoré pravidlá možu skore emailu znížiť. Výsledné skóre sa potom porovna z prahovou hodnotou (vychodzia je 5,0) a v prípade, že email hodnotu dosiahne alebo prekročí, je označený ako spam.

yum install -y spamassassin

cp -ir /root/.spamassassin /root/.spamassassin-backup
cp local.cf /etc/mail/spamassassin/
cp sample-spam /
sa-learn --spam /sample-spam.txt
rm /root/.spamassassin/user_prefs
ln -s /var/amavis/.spamassassin/bayes_seen /root/.spamassassin/bayes_seen
ln -s /var/amavis/.spamassassin/user_prefs /root/.spamassassin/user_prefs
ln -s /var/amavis/.spamassassin/bayes_toks /root/.spamassassin/bayes_toks
chown -R amavis:amavis /var/amavis

Pridáme dva riadky do /etc/mail/spamassassin/local.cf (Samozrjeme že podľa Vašej siete)

internal_networks 192.168.2/24

trusted_networks 192.168.2/24

Nastavíme automatické sťahovanie spamassassin rules

cd /etc/mail/spamassassin

wget http://spamassassin.apache.org/released/GPG-SIGNING-KEY
gpg --import GPG-SIGNING-KEY
yum install perl-IO-Zlib --enablerepo=rpmforge
sa-update

a aj spamassassin databázou

Pridame riadky do /etc/cron.daily/amavisd-new[@

#!/bin/sh
#
#  Daily maintenance for amavisd-new
# Needed only if spamassassin is in use
umask 022
test -e /usr/bin/sa-learn && test -e /usr/sbin/amavisd && {
       su - amavis -c '/usr/bin/sa-learn --sync --force-expire >/dev/null'
}
exit 0

Pridáme ho do Crontabu

# automaticke stahovanie novych rules pre spamassassin
05 02 * * * /usr/bin/sa-update && /usr/bin/spamassassin --lint && /etc/init.d/amavisd restart

--------------------------------------------------------------------------------------------------------------------------------------

Týmto by som túto časť aj uzavrel a nabudúce sa pozrieme na Sa-Wrapper, Razor, DCC, PostGrey. Zapneme TLS.

    • RE: Linux ako Mail Server I. 24.09.2014 | 11:32
      Avatar bedňa antiX, Devuan, LegacyIce  Administrátor

      O mail serveroch toho moc neviem, tak každá rada sa môže hodiť. Nemal si najprv rozchodiť emailový server s nejakým webklientom a potom tam nahádzať bezpečnostné prvky? Kecať ti do toho nebudem, ako píšem tu niesom doma.

      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
      • RE: Linux ako Mail Server I. 24.09.2014 | 11:40
        Avatar Andrej Lacho Debian, CentOS obcas Kubuntu  Administrátor

        Ono to je v podstate jedno (aspon pre mna). To ze tam bude nejake rozhranie je sice pekne ale co na tom ze to nema nic v sebe ;)

        Ja sam sa este pri tom ucim, takze neviem ci ma nejaky zmysel to robit tak ci onak. Rad by som ak by tu bol nejaky mail guru a odpovedal nam na to.

        Linux without fckin systemd
        • RE: Linux ako Mail Server I. 24.09.2014 | 20:50
          Avatar bedňa antiX, Devuan, LegacyIce  Administrátor

          OK, tak si počkám na pokračovanie.

          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: Linux ako Mail Server I. 25.11.2014 | 01:11
      Avatar Tomáš Hanzel Vždy tá pravá  Používateľ

      Trochu mi chýba rozpis čo čo robí a prečo to tak má byť.

      Takto je to copy&paste

      ....now i am root...

      Close the Windows Open The Source
      • RE: Linux ako Mail Server I. 25.11.2014 | 08:02
        Avatar Andrej Lacho Debian, CentOS obcas Kubuntu  Administrátor

        Good idea.. a trochu si mi pripomenul že by som tu už mal hodiť konečne pokračovanie :)

        Linux without fckin systemd
      • RE: Linux ako Mail Server I. 27.11.2014 | 11:52
        Avatar bedňa antiX, Devuan, LegacyIce  Administrátor

        A čo dokáže spraviť aj jedna nechcená medzera, to som sa nemôhol dosmiať :)

        https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/issues/123

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
        • RE: Linux ako Mail Server I. 27.11.2014 | 12:56
          Avatar Andrej Lacho Debian, CentOS obcas Kubuntu  Administrátor

          Just do It!

          Pekný fail :)

          Linux without fckin systemd
    • RE: Linux ako Mail Server I. 31.01.2015 | 22:22
      Avatar vladky   Návštevník

      Ahojte. Prezradi mi niekto na co je potrebny proxy server na postovom servery ? Ak tu konfigurujeme postovy server a nie nejaky vse-server, proxy tu nema co hladat.