Dit is grotendeels geinspireerd door deze toot.
Postfix en Dovecot
Postfix heeft de volgende configuratie-bestanden om de mail server in te stellen (te vinden onder /etc/postfix):
main.cf- contains the global configuration of Postfix.master.cf- specifies Postfix interaction with various processes to accomplish mail delivery.access- specifies access rules, for example hosts that are allowed to connect to Postfix.transport- maps email addresses to relay hosts.aliases- contains a configurable list required by the mail protocol that describes user ID aliases. Note that you can find this file in the/etc/directory
Red Hat heeft een goede tutorial voor een combinatie van postfix en dovecot: Deploying and configuring a Postfix SMTP server. Eerst postfix installeren, dan TLS instellen, dan combineren met dovecot. Als laatste, maar misschien wel het belangrijkste, de server beveiligen.
Voor goede werking moet ik TLS certificaten voor Postfix, voor Dovecot en voor MariaDB hebben voor dezelfde hostname. Ik vraag daarvoor een certificaat aan en configureer ze zo dat ze naar hetzelfde certificaat wijzen.
Voor MariaDB moet daarvoor een aangepaste SELinux module gemaakt worden. Daarvoor moet je eerst mariadb proberen te starten met systemctl start mariadb. Daarna logt setroubleshoot in /var/log/messages. Dan krijg je instructies om sealert -l GUID te doen. Dat laat waarschijn iets zien als het volgende:
ausearch -c 'mariadbd' --raw | audit2allow -M my-mariadbd
semodule -X 300 -i my-mariadbd.pp
De password scheme is SHA512-CRYPT, dus ik moet in de MariaDB dovecotDB database wachtwoorden in die vorm toevoegen. Dit kan met doveadm pw (bron).
De VM heeft nu 1.5G RAM, en gebruikt daarvan 1.1G na 3 uur uptime met dovecot, mariadb en postfix aan. Dus waarschijnlijk moet dat wat omhoog.
TODO
8.1. Installing and configuring a Postfix SMTP server8.2. Customizing TLS settings of a Postfix server8.6. Configuring Postfix as an outgoing mail server to relay for authenticated users8.7. Delivering email from Postfix to Dovecot running on the same host9.3. Setting up a Dovecot server with MariaDB SQL authentication- Geen DH-bestand gegenereerd, aangezien ik elliptic curve certificaten gebruik en dan hoeft het (volgens mij) niet
- Using MariaDB
2.3. Configuring MariaDB2.4. Setting up TLS encryption on a MariaDB server, metrequire_secure_transport = onmariadb-secure-installationhelemaal volgenDe volgende SQL queries doen inmysql:create database dovecotDB; create user dovecot identified by 'VerySecurePassword123'; use dovecotDB; CREATE TABLE users (username VARCHAR(128) NOT NULL, password VARCHAR(128) NOT NULL); grant select on dovecotDB.users to dovecot;
9.6. Configuring an LMTP socket and LMTPS listener
- 8.9.1. Reducing Postfix network-related security risks
- NFS heb ik niet aan staan
- Nog niet alle niet-root gebruiker
/sbin/nologinals shell gegeven - Ik wil dat het juist wel open is voor systemen buiten de server zelf, dus ik het
inet_interfaces = allaanstaan- Volgens mij heb ik het zo ingesteld dat alleen geautoriseerde gebruikers mails kunnen versturen, dus dit is in principe ok.
8.9.2. Postfix configuration options for limiting DoS attacks8.9.3. Configuring Postfix to use SASL* Firewallinstellingen:firewall-cmd --permanent --add-service smtp firewall-cmd --permanent --add-service=imaps --add-service=imap --add-service=pop3s --add-service=pop3
rspamd
Om rspamd te downloaden moet je eerst EPEL aanzetten: sudo dnf install epel-release. Daarna installeren aan de hand van de instructies:
# Determine EL version and add repository
source /etc/os-release
EL_VERSION=$(echo -n $PLATFORM_ID | sed "s/.*el//")
sudo curl -o /etc/yum.repos.d/rspamd.repo https://rspamd.com/rpm-stable/centos-${EL_VERSION}/rspamd.repo
# Install
sudo dnf install rspamd
In plaats van Redis komt RHEL 10 met keydb, dat is als het goed is een "drop in alternative to Redis".
Het web interface van rspamd kun je zien m.b.v. ssh tunneling: ssh -L 11334:127.0.0.1:11334 user@mailserver.
Ik heb de quick start gevolgd. Ik kan nog instellingen veranderen of automatisch leren met Sieve instellen. Maar voor nu is dit denk ik goed genoeg.
DNS records
MX, SPF, DKIM en DMARC instellen: tutorial van Synology. DKIM key generen kan met de rspamd DKIM signing module. Daarvoor moet je /etc/rspamd/local.d/dkim_signing.conf aanpassen en moet je de key generen met iets als rspamadm dkim_keygen -s 'mail' -b 4096 -d domein.nl -k domein.key > domein.txt. domein.txt laat dan de DNS record zien die je moet toevoegen. Let op, het kan zijn de public key over meerdere regels verdelen, dus die moet je dan eerst samenvoegen.
Roundcube
Ik heb roundcube gedownload en met nginx en php-fm ingesteld. Voor php-fm heb ik deze tutorial gebruikt. De gebruiker die je maakt voor de "pool" moet lees en schrijf toegang hebben tot de temp en logs mappen in de roundcube (web) root. Ik heb de volgende packages geinstalleerd voor volledige roundcube functionaliteit:
nginx
php-fpm
php-mbstring
php-xml
php-intl
php-pdo
php-mysqlnd
php-gd
php-zip
php-pecl-imagick
Ik zit vast op de derde setup pagina met het testen van de SMTP en IMAP configs. Ik heb een test account gemaakt in dovecotDB, maar kan niet inloggen. Om verder te testen heb ik de lijn $config['enable_installer'] = true; toegevoegd aan config.inc.php.
Ik heb dovecot auth omgezet naar pam, omdat me dat meer standaard leek, maar dat werkte nog niet. Ik heb de configuratie aangepast aan de hand van de "standaard" configuratie op dovecot.org, maar dat werkte ook nog steeds niet. Als ik met sendmail -bv probeer een mail te sturen zoals hier beschreven, krijg ik een melding van dovecot/lmtp dat de user doesn't exist. Waarom weet ik niet, want het staat goed geconfigureerd. Ik heb ook geprobeert het mailprogramma op mijn PC te koppelen aan de mailserver. Koppelen lukt, maar mails versturen niet met een melding dat er iets mis is met de (verbinding met de) mail server, oftewel postfix.
Ik heb een uitgebreide guide gevonden, wel voor Debian, die ik ga bekijken. Hopelijk helpt dat: ISPmail guide.