> For the complete documentation index, see [llms.txt](https://andreis-organization-17.gitbook.io/devops/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://andreis-organization-17.gitbook.io/devops/mail-server/mail-system-postfix-+-dovecod-part-1.md).

# Mail System (Postfix + Dovecod ) Part 1

Setup  Postfix

```
nano /etc/postfix/main.cf
```

Coment this strings

```
#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_tls_security_level=may
#smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
```

Insert this strings

```
virtual_transport=lmtp:unix:private/dovecot-lmtp
relay_domains = mysql:/etc/postfix/mysql/relay_domains.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf,mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
virtual_mailbox_base=/var/mail/vmail/
local_recipient_maps=$virtual_mailbox_maps

smtpd_sasl_auth_enable=yes
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
broken_sasl_auth_clients=yes
smtpd_sasl_security_options=noanonymous

smtpd_use_tls=yes
smtpd_tls_cert_file=/etc/postfix/certs/cert.pem
smtpd_tls_key_file=/etc/postfix/certs/key.pem
smtpd_sasl_tls_security_options=noanonymous
smtpd_tls_auth_only=yes

smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_helo_hostname,reject_non_fqdn_sender,reject_unknown_sender_domain,reject_non_fqdn_recipient,reject_unknown_recipient_domain

smtpd_banner=$myhostname ESMTP

strict_rfc821_envelopes=yes
disable_vrfy_command=yes
smtpd_helo_required=yes
```

```
sudo nano /etc/postfix/master.cf
```

Insert this strings&#x20;

```
submission inet n - n - - smtpd
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o syslog_name=postfix/submission
 -o smtpd_tls_wrappermode=no
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
 -o milter_macro_daemon_name=ORIGINATING

smtps inet n - n - - smtpd
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o syslog_name=postfix/smtps
 -o smtpd_tls_wrappermode=yes
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
 -o milter_macro_daemon_name=ORIGINATING
dovecot unix - n n - - pipe
 flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
```

```
sudo mkdir /etc/postfix/mysql
```

```
sudo nano /etc/postfix/mysql/relay_domains.cf
```

```
hosts = localhost
user = postfix
password = password
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'
```

```
sudo nano /etc/postfix/mysql/virtual_alias_domain_maps.cf
```

```
hosts = localhost
user = postfix
password = password
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1
```

```
sudo nano /etc/postfix/mysql/virtual_alias_maps.cf
```

```
hosts = localhost
user = postfix
password = password
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
```

```
sudo nano /etc/postfix/mysql/virtual_mailbox_domains.cf
```

```
hosts = localhost
user = postfix
password = password
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
```

```
sudo nano /etc/postfix/mysql/virtual_mailbox_maps.cf
```

```
hosts = localhost
user = postfix
password = password
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND 
```
