Basic mailserver configuration on RHEL10
From Fvettore-WIKI
change your SSHd config (suggested)
semanage port -l | grep ssh semanage port -a -t ssh_port_t -p tcp 1997 semanage port -l | grep ssh
vi /etc/ssh/sshd_config
Edit SSHD port and restart service
systemctl restart sshd
install Mariadb and set up tables
timedatectl set-timezone Europe/Rome dnf install mariadb dnf install mariadb-server systemctl enable mariadb --now
USERS
CREATE TABLE `users` ( `email` varchar(200) NOT NULL, `password` varchar(128) NOT NULL, `enabled` int(11) NOT NULL DEFAULT '1', `username` varchar(45) DEFAULT NULL, PRIMARY KEY (`email`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DOMAINS:
CREATE TABLE `domains` ( `domain` varchar(200) NOT NULL, `enabled` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`domain`)) ENGINE=MyISAM DEFAULT CHARSET=utf8
ALIAS:
CREATE TABLE `aliases` ( `email` varchar(128) NOT NULL, `alias` varchar(255) NOT NULL, `enabled` int(11) DEFAULT '1', PRIMARY KEY (`email`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ADD a test user:
insert into users set email='paperino@274512.xyz', password='segretina412', username='paperino';
Grant privileges:
grant select on mailserver.* to postfix@localhost identified by 'yoursecretpassword'
SSL certs
dnf install epel-release dnf install certbot
Create cert with your FQN server name
certbot certonly -d server08.vettore.org
POSTFIX
dnf install postfix postfix-mysql groupadd -g150 vmail useradd -r -u150 -d /var/vmail -s /sbin/nologin -g vmail vmail mkdir /var/vmail chown vmail:vmail /var/vmail
Edit /etc/postfix/main.cf and change/add the following line accordingly
inet_protocols = all virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-users.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-aliases.cf virtual_transport = dovecot smtpd_tls_cert_file = /etc/letsencrypt/live/server08.vettore.org/cert.pem smtpd_tls_key_file = /etc/letsencrypt/live/server08.vettore.org/privkey.pem smtp_tls_CApath = /etc/letsencrypt/live/ smtp_tls_CAfile = /etc/letsencrypt/live/server08.vettore.org/fullchain.pem
dovecot:
conf.d/10-mail.conf
mail_location = maildir:/var/vmail/%d/%n/Maildir
verificare e rinominare togliendo .ext conf.d/auth-sql.conf.ext
commentare userdb
decommentare e modificare
userdb {
driver = static
args = uid=150 gid=150 home=/var/vmail/%d/%n allow_all_users=yes
}
il percorso /etc/dovecot/dovecot-sql.conf.ext e creare il file /etc/dovecot/dovecot-sql.conf.ext
driver=mysql default_pass_scheme = PLAIN connect= host=127.0.0.1 port=3306 dbname=mailserver user=postfix password=quigattacicova password_query = SELECT password, email as user FROM users where email='%u' AND enabled=1
in conf.d/10-ssl.conf
mettere certificati (no CA)
in dovecot.conf
decommentare e togliere pop3
protocols = imap lmtp submission
In fondo:
mail_uid=vmail mail_gid=vmail
first_valid_uid = 150
last_valid_uid = 150
service stats {
unix_listener stats-reader {
group = vmail
mode = 0666
}
unix_listener stats-writer {
group = vmail
mode = 0666
}
}
