Basic mailserver configuration on RHEL10: Difference between revisions

From Fvettore-WIKI
No edit summary
Line 66: Line 66:
  smtp_tls_CApath = /etc/letsencrypt/live/  
  smtp_tls_CApath = /etc/letsencrypt/live/  
  smtp_tls_CAfile = /etc/letsencrypt/live/server08.vettore.org/fullchain.pem
  smtp_tls_CAfile = /etc/letsencrypt/live/server08.vettore.org/fullchain.pem
Setup the connectors configured above
/etc/postfix/mysql-virtual-domains.cf:
user = postfix
password = yuorsecretpassword
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM domains WHERE domain='%s' AND enabled=1
/etc/postfix/mysql-virtual-users.cf :
<pre>
user = postfix
password = yoursecretpassword
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM users where email='%s' and enabled=1 </pre>
/etc/postfix/mysql-virtual-aliases.cf
<pre>
user = postfix
password = yoursecretpassword
hosts = 127.0.0.1
dbname = mailserver
query = SELECT alias FROM aliases WHERE email='%s' AND enabled=1 </pre>


<br>
<br>
dovecot:
===dovecot===


conf.d/10-mail.conf
conf.d/10-mail.conf

Revision as of 06:52, 7 October 2025

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

Setup the connectors configured above

/etc/postfix/mysql-virtual-domains.cf:

user = postfix
password = yuorsecretpassword
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM domains WHERE domain='%s' AND enabled=1 

/etc/postfix/mysql-virtual-users.cf :

user = postfix
password = yoursecretpassword
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM users where email='%s' and enabled=1 

/etc/postfix/mysql-virtual-aliases.cf

user = postfix
password = yoursecretpassword
hosts = 127.0.0.1
dbname = mailserver
query = SELECT alias FROM aliases WHERE email='%s' AND enabled=1 


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
  }
}