Basic mailserver configuration on RHEL10: Difference between revisions
From Fvettore-WIKI
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
===change your SSHd config (suggested)=== | |||
semanage port -l | grep ssh | semanage port -l | grep ssh | ||
semanage port -a -t ssh_port_t -p tcp 1997 | semanage port -a -t ssh_port_t -p tcp 1997 | ||
| Line 13: | Line 9: | ||
systemctl restart sshd | 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### | ###SSL certs### | ||
dnf install epel-release | dnf install epel-release | ||
Revision as of 06:48, 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
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
}
}
