config/mail/README.md

58 lines
1.6 KiB
Markdown

# Mail with SQLite
## Create User
```sh
sudo sed -i '$ a vmail:*:2000:2000::/data/mail:/usr/sbin/nologin' /etc/passwd
sudo sed -i '$ a vmail:x:2000:' /etc/group
sudo mkdir -p /data/mail/mail
sudo mkdir -p /data/mail/config
sudo chown vmail: /data/mail/*
cat schema.sql | sudo -u vmail sqlite3 /data/mail/config/vmail.db
sudo chown vmail:postfix /data/mail/config/vmail.db
sudo chmod 640 /data/mail/config/vmail.db
```
## Install Software
```sh
sudo apt install sqlite3 postfix postfix-sqlite dovecot-imapd dovecot-sqlite opendkim libopendbx1-sqlite3
```
## Apply Configuration
```sh
DOMAIN=example.com
sudo cp -r postfix dovecot /etc
sudo chmod 600 /etc/postfix/sni.cf
sudo sed -i '$ r opendkim/local.conf' /etc/opendkim.conf
sudo sed -i s/example.com/$DOMAIN/ /etc/postfix/{main,sni}.cf /etc/dovecot/local.conf
sudo sed -i '/include auth-system/ s/.*/#&/' /etc/dovecot/conf.d/10-auth.conf
sudo ln -s /data/mail/config/vmail.db /.opendkim-bug-241.db
opendkim-genkey -d $DOMAIN -s s
chmod +r s.private
cat dkim.sql | sed s/DOMAIN/$DOMAIN/ | sudo -u vmail sqlite3 /data/mail/config/vmail.db
cat s.txt
rm s.private s.txt
```
## Certificate Reload
```sh
postmap -F /etc/postfix/sni.cf
```
## Notes
* The `vmail.db` parent directory needs to be writeable by the user modifying the database
* The postfix process does not load the supplementary groups (`set_eugid` only sets one gid),
hence the vmail database needs to be readable by the postfix primary group
* The dovecot process runs as root and can access the database
* OpenDKIM's `dsn` parsing is broken and opens the database in the root directory