58 lines
1.6 KiB
Markdown
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
|