Ievads

Padomājiet 2x vai Jums to vajag, jo tas ir laikietilpīgi (dārgi), čakarīgi un arī riskanti... ;-)

Huh, šis gāja nejēdzīgi ilgi un čakarīgi virkni pamatotu iemeslu dēļ. Ne velti raksta internetā - slikta ideja... Bet man tas ir process, gan mācīšanās, gan izaicinajums savām spējām un tagad man ir savs e-pasta serveris ar visām no tām izrietošajām sekām gan labajām, gan ne tik labajām. :-)

Lieta tā, ka lai uzstādītu un palaistu e-pasta serveri vajag nodrošināt virkni saistītās ārējās atkarības, bez kurām tas vnk. nestrādā: 1. piereģistrēts savs domēna vārds, 2. pieeja pie tā DNS ierakstiem un iespēja tos labot, 3. patstāvīgā IP addrese, 4. iespējas nokārtot PTR ierakstu šai IP addresei pie interneta pakalpojumu sniedzēja, kas šo adresi Jums nodrošina, 5. iespēja ģenerēt SSL sertifikātus, kas prakstiski nozīmē arī web serveri un proxy.

Nu un nemaz nerunājot par pašu instalāciju un konfigurāciju.

Papildus vēl jānodrošina: 1. Lai kaķis spēlējoties ar vadiem, to serveri neizslēdz, 2. Lai kāds nevēlams viesis tanī “neielien” un nepadara Tevi par līdzdalībnieku kādā krimināli sodāmā dabībā, 3. Lai Tavu e-pastu kasti vnk. nepied... ar mēstulēm, 4. Lai vnk. kaut kāda diska vai cita dzelža izbeigšanās dēļ Tavi visi dārgie e-pasti aiziet nebūtībā. 5. u.tml.

T.i. ja vien Jums nav īpašas prasības dabūt to e-pasta serveri pie sevis plauktā, tad - nedariet to! Un droši variet nelasīt tālāk, labāk pameklējiet, vai pajautājet MI, par kādu gatavu e-pasta servisu (kas Jums nodrošinās e-pasta servisu ar visām nepieciešamajām piedevām 15min laikā), vai kādu manuāli, kā palaist savu e-pasta servisu uz sava mākoņservera.

Sākums

Mani tomēr šis izaicinājums nelika mierā un ar vairākiem periodiski atkārtotiem mēģinājumiem galu galā tiku pie sava e-pasta servera “plauktā”. Pēdiņās, jo biki jau esmu to nodrošinājis ar nepārtauktību un gluži plauktā nestāv, bet nu arī ne bruņotā datu centrā. ;-)

Sākotnēji mēģināju vairākus gatavos risinājumus - pārsvarā to pašu postfix u.tml. instalāciju pakas ar konfigurācijas vedņiem. Bet atdūros pret pirmo problēmu - piedabūt, lai serveris varētu atbilstoši piekļūt SSL sertifikātu datnēm. T.i šīs instalāciju pakas bija domātas darbināt mākoņserveros, kas diezgan tieši izvietoti publiskajā internetā un nāca komplektā ar reveso proxy vai tml. risinājumu, kas vienlaicīgi nodrošināja arī SSL nepieciešamās darbības. Mana prasība bija tāda, ka serverim jādarbojas manā lokālajā infrastruktūrā tīklā uz izolētas virtuālās mašīnas, kas nozīmēja, to ka es īsti nevaru izmantot savu esošo reverso proxy. Izmantoju NPM, kas ir ļoti parocīgs dažādu web servisu publicēšanai un SSL nodrošināšanai ar Let’s Encrypt un no tā man negribējās atteikties. Bet kā nodrošināt, kā pasta servera programmatūra piekļūs sertifikātu datnēm, kas atrodas citā datorā, citā konteinerā u.tml. Tā jau bija nestandarta instalācija un internetā nemaz tik daudz tādu piemēru nav. Beigu beigās atradu/izdomāju samērā jēdzīgu risinājumu - NPM pārvietoju uz docker konteineri pašā e-pasta serverī. E-pasta serveris savukārt darbojas kā VM (Ubuntu) uz kāda no (OMV) severdatoriem. NPM savukārt ar rūtera (OpenWRT) ugunsmūra konfigurāciju ir “izgriezts” uz āru, uz publisko internetu. Rezultātā varēju paturēt visas jaukās NPM ērtības un vienlaicīgi pilnvērtīgi darbināt e-pasta serveri.

Otra “plaukta” problēma bija reversais DNS ieraksts, jeb PTR ieraksts, ko reāli var dabūt tikai pie tāda interneta pieslēguma, kam ir patstāvīgā/fiksētā IP adrese. Un to var izveidot tikai pieslēguma servisa piegādātājs. Pie tam ne visi interneta piegādatāji arī fiksētai IP addresei to var/grib izveidot. Mans jaudīgākais “pilsētas” pieslēguma piegādātājs to nevarēja vai negribēja, bet mans lauku mobilā interneta pieslēguma piegādātājs tomēr varēja un spēja to izdarīt diezgan operatīvi. Ātrums pieslēgumam gan priekš mūsdienu prasībām drīzāk pieticīgs, bet e-pastam pietiekoši labs.

Instalācija

Beigu beigās no idejas izmantot gatavās instalāciju pakas un risinājumus nonācu atpakaļ pie tā paša vecā plaši pielietotā atvērtā koda postfix komplekta un atbilstošas pietikami svaigas, aktuālas un pilnīgas instrukcijas sameklēšanas. Jā, it sevišķi tagad, MI apstākļos tīkls ir pilns ar kaudzi mākslīgi ģenerētiem rakstiem, vai arī (pie)raksti, kas satur tikai to info, kas autoram pošam nav bijusi zināma, vai likusies svarīgi pierakstīt. T.i. diezgan daudz nezināmā un neskaidrā.

Tika mēģināti vairāki varianti, līdz beidzot sakarīgākais bija Liviu Gelca rakstu sērija iekš LinkedIn.

Pirmās divas sadaļas palīdzēja gan pasta servera instalācijai gan DNS ierakstu sakārtošanai. Pirmā sadaļa arī sākas ar labu plānu, kas ļoti noder vēlāk pie e-pasta servera drošības nostiprināšanas.

How to build Your Own Email Server on Ubuntu - Part 1

How to build Your Own Email Server on Ubuntu - Part 2

PostFixAdmin instalācija

Turpinam pēc receptes: How to build Your Own Email Server on Ubuntu - Part 3

Modifikācijas receptei:

Step 3: Setting Up Permissions (otrajā daļā):

Atceramies, ka sertifikātu vadībai (atjaunošanai) izmantojam NPM, tāpēc šiet atrodam, kur mums glabājas vajadzīgie sartifikāti un iedodam atļaujas:

sudo setfacl -R -m u:www-data:rx /home/auser/nginx-proxy-manager/letsencrypt/live/npm-1 /home/auser/nginx-proxy-manager/letsencrypt/archive/npm-1

Kuru no apakšmapēm mums vajag - to varam atrast sava NPM web saskarnē sadaļā SSL Certificates uzklikšķinot uz trīs punktu podziņas, kad atveras izvēlne redzam Certificate #1, kas arī ir mūsu lietojamā apakšmape .../letsencrypt/live/npm-1: 2026-02-02_19-25-33.png

Step 6: Create Apache Virtual Host or Nginx Config File for PostfixAdmin:

Izmantoju nginix. To, kas uz tās pašas VM, kur viss pasta serveris. Der tā pati piemēra konfigurācija, vienīgi par cik izmantoju, jau Ubuntu 24.04, tad ceļš uz konfigfailu ir nedaudz cits:

/etc/nginx/sites-available/postfixadmin.conf

un pašā konfigfailā jau izmantojam php8.3-fpm:

server {
   listen 80;
   listen [::]:80;
   server_name mail.mydomain.com;

   root /var/www/postfixadmin/public/;
   index index.php index.html;

   access_log /var/log/nginx/postfixadmin_access.log;
   error_log /var/log/nginx/postfixadmin_error.log;

   location / {
       try_files $uri $uri/ /index.php;
   }

   location ~ ^/(.+\.php)$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
   }
}

Vēl savajadzējās PHP SQLite3 paplašinājumu (lai gan izmantosim MariaDB/MySQL):

sudo apt update
sudo apt install php8.3-sqlite3

un pašu php composer:

sudo apt update
sudo apt install composer

# Navigate to your PostfixAdmin directory:
cd /var/www/postfixadmin

# Run the installation:
sudo composer install

# Noignorējam brīdinājumu par instalācijas darbināšanu kā root
# pēc tam sakārtojam atļaujas:
sudo chown -R www-data:www-data /var/www/postfixadmin

Step 8: Enabling HTTPS

Šī vietā vnk ejam uz sava NPM web saskarni un izveidojam hostu un pēc tam pieprasam un nokofigurējam SSL. Šeit arī skat vēlreiz 3. soļa modifikāciju augstāk, ja izmantojam citu domēnu.

Papildus, lai nemet warning konfigurācijas web saskarnē un vēlāk korektāk strādā, tad veicam papildinājumus:

# iekš /var/www/postfixadmin/config.local.php
# pievienojam, vai ielabojam šo:
$CONF['https'] = true;

# iekš /etc/nginx/sites-available/postfixadmin.conf
# location ~ \.php$ bloka
# pārliecinamies, ka ir šīs rindas:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

Mēstuļu apstrādes un antivīrusa pārbaudes instalācija

amavisd-new instalācija

sudo apt update
sudo apt install amavisd-new spamassassin clamav-daemon \
arj bzip2 cabextract cpio file gzip lhasa nomarch pax rar unrar unzip zip

Understanding the Flow

Before we dive into the MySQL integration, it's helpful to visualize where Amavis actually sits in your OpenMediaVault mail stack. It acts as a "sandwich" layer between the outside world and your mailbox.

  1. Postfix receives the mail.
  2. It hands it to Amavis (Port 10024).
  3. Amavis asks SpamAssassin and ClamAV: "Is this safe?"
  4. If clean, Amavis hands it back to Postfix (Port 10025).
  5. Postfix finally saves it to your dir structure on your drive.

Atļaujas

For ClamAV to scan the temporary files Amavis creates, the clamav user must be part of the amavis group.

sudo adduser clamav amavis
sudo adduser amavis clamav
# Restart the antivirus daemon to apply
sudo systemctl restart clamav-daemon
# Also enable updater:
sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam

Amavis konfigurācija

Amavis konfigurācija atrodama vairākos failos iekš /etc/amavis/conf.d/.

Ieslēdzam Mēstuļu un Vīrusu noteikšanu: Labojam /etc/amavis/conf.d/15-content_filter_mode. Izkomentējam bypass rindiņas šādi (šis ieslēdz pārbaudes):

...
@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
...
@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
...

Pasakam Amavis, ka visi domēni ir lokāli, lai nevirza tālāk bez skanēšanas. Failā /etc/amavis/conf.d/05-domain_id ielabojam šo atlsēgu uz:

@local_domains_acl = ( "." );

Integrējam ar Postfix

Tagad mēs “pasakam” Postfix, lai tas vispirms sūta e-pastu uz Amavis (Port 10024) un saņem “tīru” epastu no tā atpakaļ (Port 10025).

Labojam /ect/postfix/main.cf

sudo postconf -e "content_filter = smtp-amavis:[127.0.0.1]:10024"
receive_override_options = no_address_mappings

Labojam /ect/postfix/master.cf Pievienojam šo bloku faila /etc/postfix/master.cf beigās. Tas iestatīs atpakaļsaiti uz Postfix

# Amavis scanning interface
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

# Listening port for filtered mail coming back from Amavis
127.0.0.1:10025 inet n  -       y       -       -       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,no_milters

Restartējam servisus:

sudo systemctl restart spamd amavis postfix clamav-daemon

Pārbaudam kā darbojas:

tail -f /var/log/mail.log | grep -i amavis

Izskatās, ka pietrūkst pakotāji. Uzliekam tos:

sudo apt install p7zip-full
sudo systemctl restart amavis

Pārbaudei nosūtam e-pastu, kurā iekļaujam sekojušu teksta virkni:

XJS*C4JDBQOALVVBJXU4P$QQZTPQWEFHRYOPWGA---HMDNUTPTTP-C124XQSM

Ja viss ir bijis pareizi, tad piemēram Thunderbird e-pasts uzreiz iekritīs mēstuļu mapē.

Tas gan vēl nav viss, jo patreiz filtrēšanu uzņemas Thunderbird, bet ne pats serveris.

Lai process pilnīgāk notiktu uz servera mums vēl vajag

Instalējam Sieve

sudo apt update
sudo apt install dovecot-sieve dovecot-managesieved

Ieslēdzam Dovecot spraudni: Labojam /etc/dovecot/conf.d/20-lmtp.conf Atrodam sekciju protocol lmtp un norādam mail_plugins:

protocol lmtp {
  # Add sieve to whatever is already there
  mail_plugins = $mail_plugins sieve
}

Konfigurējam globālos Sieve noteikumus

Mēs iestatam noteikumu, kas attieas uz jebko, kas tiek darbināts caur PostfixAdmin. Labojam /etc/dovecot/conf.d/90-sieve.conf. Meklējam iestatījumus sieve_before vai sieve_default un izkomentējam šo rindu:

plugin {
  # This points to a script that runs BEFORE any user-defined scripts
  sieve_before = /var/lib/dovecot/sieve/default.sieve
}

Iveidojam mapi un skriptu:

sudo mkdir -p /var/lib/dovecot/sieve
sudo nano /var/lib/dovecot/sieve/default.sieve

, kurā iekopējam šo:

require ["fileinto"];

# If Amavis marked it as spam
if header :contains "X-Spam-Flag" "YES" {
    fileinto "Junk";
    stop;
}

Uzliekam atļaujas un restartējam:

# Compile the sieve script into a binary Dovecot can read
sudo sievec /var/lib/dovecot/sieve/default.sieve

# Set permissions
sudo chown -R vmail:vmail /var/lib/dovecot/sieve

# Restart Dovecot
sudo systemctl restart dovecot

Mēstuļu ķeršanas pārbaude un pieregulēšana

Man pēc noklusējuma darbojās tikai tas, ka Thunderbird tagad labāk pamanīja mēstules un iekrāva meštuļu mapē (Junk), bet uz citiem e-pasta klientiem nē (tāpat iekrita galvenajā Inbox)

Citā komandrinā var tai pašā e-pasta serverī izpildam šo:

echo "XJS*C4JDBQOALVDRTQ9498VE74OUKVEP-FOR-ANY-TEST-MAIL-FORMAT-CH*" | sendmail adrese@mansdomens.lv

Šim e-pastam pa taisno jānonāk mēstuļu mapē, jau e-pasta servera pusē pat vēl nenonākot līdz e-pasta klientiem.

Papildinājumi mēstuļu filtram

Konfigurācijas failā: /etc/spamassassin/local.cf ielabojam:

# Penalize mail not addressed to my domains
header   __LOCAL_TO_MYDOMAIN   To =~ /mydomain\.lv/i
header   __LOCAL_TO_MYDOMAIN2   To =~ /mydomain2\.lv/i
meta     LOCAL_NOT_FOR_ME   !(__LOCAL_TO_MYDOMAIN || __LOCAL_TO_MYDOMAIN2)
describe LOCAL_NOT_FOR_ME   Message To: header does not match my domains
score    LOCAL_NOT_FOR_ME   2.5

# Neutralize the 'Certified' bonus that spammers abuse
score RCVD_IN_VALIDITY_CERTIFIED 0.0
score RCVD_IN_VALIDITY_SAFE 0.0

# Enable Bayes Learning
use_bayes 1
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 5.0

Pārbaudam vai pareizi:

sudo spamassassin --lint

Restartējam:

sudo systemctl restart amavis

Roundcube e-pasta web klients

Tas ļauj mums iztikt bez sava e-pasta klienta. Pietiek vnk. ar interneta caurlūku. Cena gan tam visam ir vēl viena uzbrukumiem pakļauta vieta webā. Bet ja akurāti darbojamies un regulāri liekam atjauninājumus, tad neērtības atsver ērtības.

Nepieciešamo programmu biblotēku instalācija

Ja ir instalēts viss iepriekšējais, tad pirmās divas daļas nevajag:

sudo apt update
# Core Web Engine
sudo apt install nginx php-fpm php-mysql 

# Shared extensions for both UIs
sudo apt install php-gd php-xml php-mbstring php-intl php-zip php-curl 

# Roundcube Specifics (Mail handling libraries)
sudo apt install php-pear php-auth-sasl php-mail-mime php-net-smtp php-net-socket

Novelkam RoundCube

Paskatam pēdējos izlaidumus (gan iepriekš sākumā jau pārbaudam nepieciešamās bibliotēkas un nepieciešamības gadījumā koriģejam iepriekšējos soļus) un novelkam vajadzīgo:

cd /tmp
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.13/roundcubemail-1.6.13-complete.tar.gz
tar -xvzf roundcubemail-1.6.13-complete.tar.gz
# pārvietojam uz web mapi:
sudo mv roundcubemail-1.6.13 /var/www/roundcube
# iestatam atļaujas:
sudo chown -R www-data:www-data /var/www/roundcube

Izveidojam datubāzi un tās lietotāju

Iekš MySql/MariaDb:

sudo mariadb -u root -p

Palaižam šīs SQL komandas pa vienai pēc kārtas:

-- Create the database
CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

-- Create a user for Roundcube (Change 'your_password' to something secure)
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'nomaini_šo_uz_jēdzīgu_paroli!!!';

-- Grant permissions
GRANT ALL PRIVILEGES ON roundcubemail.* TO 'roundcube'@'localhost';

-- Save and exit
FLUSH PRIVILEGES;
EXIT;

Importējam tabulas

# Replace 'roundcubemail' with your database name if you named it differently
sudo mariadb roundcubemail < /var/www/roundcube/SQL/mysql.initial.sql

Izveidojam konfigurācijas datni

cd /var/www/roundcube/config
sudo cp config.inc.php.sample config.inc.php
# atveram konfigurācijas datbni un nomainam pass uz to, ko iepriekš izveidojam roundcube datubāzes lietotājam
sudo nano config.inc.php
# papildus šai datē ieliekam rindiņu:
$config['enable_installer'] = true;
# Atceramies vēlāk idzēst, vai izkomentēt - tā ir nepieciešama tikai uz sākotnējās instalācijas brīdi !!!

Sagatavojam nginx konfigurāciju

Izveidojam jaunu konfigurāciju priekš Roundcube (variet nosaukt failu kā vēlaties): sudo nano /etc/nginx/sites-available/roundcube

Failā iekopējam šo konfigurāciju (nepieciešamības gadījumā _servername):

server {
    listen 80;
    server_name webmail.mansdomens.lv;

    root /var/www/roundcube;
    index index.php index.html;

    # Logging
    access_log /var/log/nginx/roundcube_access.log;
    error_log /var/log/nginx/roundcube_error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # Adjust version (8.1, 8.2, 8.3) to match your 'ls /run/php/' output
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Security: Protect sensitive internal folders
    location ~ ^/(config|temp|logs|bin|SQL|INSTALL)/ {
        deny all;
    }

    location ~ /\. {
        deny all;
    }
}

Ieslēdzam konfigurāciju:

sudo ln -s /etc/nginx/sites-available/roundcube /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Iekš sava NPM web ui izveidojam savu apakšdomēnu, kā nginx konfigurācijas failā un tam sertifikātu.

Nobeiguma testi

Tālāk interneta caurlūkā dodamies uz savu Roundcube instalācijas adresi: https://roundcube.mansdomens.lv/installer

un veicam testus

IMAP vajadzētu darboties, bet priekš SMTP vajadzēja vēl šo:

sudo postconf -e "smtpd_sasl_auth_enable = yes"
sudo postconf -e "smtpd_sasl_type = dovecot"
sudo postconf -e "smtpd_sasl_path = private/auth"
sudo postconf -e "smtpd_tls_auth_only = no"
sudo systemctl restart postfix 

un roundcube konfigā šo, jo mums vēl pa starpu ir Amavis:

$config['smtp_host'] = 'localhost:10025';

ja visi testi ok, tad roundcube configā izslēdzam šo:

$config['enable_installer'] = true;

Piezīmes

Pielikumu limts konfigurējās trīs vietās: * PHP * nginx * PostFix

Spraudņi

Mark As Junk

Pamata konfigā /var/www/roundcube/config/config.inc.php:

$config['plugins'] = [
    'archive',
    'zipdownload',
    'markasjunk', // Add this
];

MarkAsJunk konfigā:

sudo cp /var/www/roundcube/plugins/markasjunk/config.inc.php.dist /var/www/roundcube/plugins/markasjunk/config.inc.php

sudo nano /var/www/roundcube/plugins/markasjunk/config.inc.php

iekopējam/ielabojam šo:

// Use the 'cmd_learn' driver (matching your file system)
$config['markasjunk_learning_driver'] = 'cmd_learn';

// These are the actual settings the cmd_learn driver looks for:
$config['markasjunk_spam_cmd'] = '/usr/bin/sa-learn --spam --dbpath /var/lib/spamassassin/.spamassassin --username=debian-spamd %f';
$config['markasjunk_ham_cmd']  = '/usr/bin/sa-learn --ham --dbpath /var/lib/spamassassin/.spamassassin --username=debian-spamd %f';

// Set these to null to avoid confusion with older drivers
$config['markasjunk_read_learning'] = null;
$config['markasjunk_unread_learning'] = null;

// Enable Debugging (Highly recommended for now)
$config['markasjunk_debug'] = true;

$config['markasjunk_move_spam'] = true;

Atļaujas:

# Allow search/execute on the main directory
sudo setfacl -m u:www-data:x /var/lib/spamassassin

# Allow full access to the hidden .spamassassin folder where the Bayes DB lives
sudo setfacl -R -m u:www-data:rwx /var/lib/spamassassin/.spamassassin

Restartējam ar sudo systemctl restart php8.3-fpm

Tagad roundcube ir iespēja marķēt e-pastu kā mestuli un vienlaicīgi apmācīt e-pasta filtru, lai nākamajās reizēs saņemot ko līdzīgu, tas uzreiz nonāk mēstuļu mapē. Tas pats notiek arī vēstuli pārvieto uz mēstuļu mapi.

Hardening - papildus drošōbai

fail2ban

Bloķē pieejas botiem, kas mēģina uzminēt paroles.

Instalācija:

sudo apt update && sudo apt install fail2ban python3-systemd -y

Izveidojam konfigurācijas datni:

sudo nano /etc/fail2ban/jail.local

kurā iekopējam (un atbilstoši pielabojam) šo:

[DEFAULT]
# Add your local network here to avoid banning yourself
# List all trusted IPs/subnets separated by spaces
ignoreip = 127.0.0.1/8 ::1 192.168.11.0/24 192.168.123.0/24
backend = systemd
bantime = 1h

[postfix]
enabled = true
port = smtp,465,submission

[postfix-sasl]
enabled = true
port = smtp,465,submission,imap,imaps,pop3,pop3s

[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps

Paceļam servisu:

sudo systemctl enable fail2ban
sudo systemctl restart fail2ban

Tas pats priekš roundcube: Izveidojam datni un atveram labošanai:

sudo nano /etc/fail2ban/filter.d/roundcube-auth.conf

konfigu aizvietojam ar sekojošo:

[Definition]
# This matches the "Login failed for ... from <HOST>" part of your log
failregex = ^.*IMAP Error: Login failed for .* from <HOST>.*$

# We leave this empty because we are reading the file directly
ignoreregex =

Norādam lai fail2ban lieto šo noteikumu: Atveram

sudo nano /etc/fail2ban/jail.local

un pievienojam šīs rindiņas:

[roundcube-auth]
enabled  = true
filter   = roundcube-auth
logpath  = /var/www/roundcube/logs/errors.log
# 'polling' or 'auto' works best for files in /var/www/
backend  = auto
port     = http,https

Atjauninam konfigu ar restartu:

sudo systemctl restart fail2ban
sudo fail2ban-client reload

Varam pārbaudīt ar:

sudo fail2ban-client status roundcube-auth

Vajadzētu ieraudzīt kaut ko šādu:

sudo fail2ban-client status roundcube-auth
Status for the jail: roundcube-auth
|- Filter
|  |- Currently failed:	0
|  |- Total failed:	0
|  `- Journal matches:	SYSLOG_IDENTIFIER=roundcube
`- Actions
   |- Currently banned:	0
   |- Total banned:	0
   `- Banned IP list:	

Nobeigums

Ko esam rezultātā ieguvuši pilnasinīgu e-pasta serveri, kam ir: * webiska domēnu un e-pastu pārvaldība ar iespējām veidot gan pāradresācijas, gan vēstkopas, * mēstuļu un antivīrusu apstrāde, * webisks e-pasta klients, kas ir integrēts ar mēstuļu apstrādi un * paroļu minēšanas bloķēšanmu.