Sign inSign up

gw000/dovecot-getmail

By gw000

•Updated over 5 years ago

Debian with *dovecot* and *getmail* for a private email gateway (IMAP).

Image
2

100K+

gw000/dovecot-getmail repository overview

⁠docker-dovecot-getmail

docker-dovecot-getmail is a Docker⁠ image based on Debian implementing a private email gateway with dovecot⁠ and getmail⁠ for gathering emails from multiple accounts on a private server (IMAP), but using a public email infrastructure for sending (SMTP).

It is a Docker container realizing a similar architecture to:

+-----------+              +-----------+               +--------------+
| ISP       |              | DOCKER    |               | LAPTOP       |
|           |              |           |           +-->|--------------|
| +-------+ | push/delete  | +-------+ | push/sync |   |  MAIL CLIENT +---+
| | IMAPS +----------------->| IMAPS +<------------+   +--------------+   |
| +-------+ |              | +-------+ |           |   +--------------+   |
| +-------+ |              |           |           |   | ANDROID      |   |
| | SMTP  |<-------+       |           |           +-->|--------------|   |
| +-------+ |      |       |           |               |  MAIL CLIENT +---+
+-----------+      |       +-----------+               +--------------+   |
                   +------------------------------------------------------+

Open source project:

⁠Usage

Requirements:

  • /home: mounted users directories (Maildir in fs layout, sieve, .getmail)
  • /etc/cron.d: mounted crontabs for executing all getmail accounts
  • /etc/ssl/private: mounted SSL/TLS certificates (dovecot.crt, dovecot.key)

Prepare your getmailrc account configurations per user (/srv/mail/home/user/.getmail/[email protected]):

# ~/.getmail/getmailrc-*: getmailrc email configuration

[retriever]
type = SimpleIMAPSSLRetriever
server = imap.email.invalid
username = [email protected]
port = 993
password = password
mailboxes = ("INBOX", "Sent", "Spam")

[destination]
type = MDA_external
path = /usr/lib/dovecot/deliver
arguments = ("-e",)

[options]
read_all = false
delete_after = 30
delivered_to = false
received = true
verbose = 1

If you are using Sieve filters and want a Refilter mailbox to trigger their refiltering, create a refilter configuration per user (/srv/mail/home/user/.getmail/getmailrc-refilter):

# ~/.getmail/getmailrc-*: getmailrc refilter configuration

[retriever]
type = SimpleIMAPRetriever
server = localhost
port = 143
username = user
password = password
mailboxes = ("Refilter",)

[destination]
type = MDA_external
path = /usr/lib/dovecot/deliver
arguments = ("-e",)

[options]
read_all = false
delete = true
delivered_to = false
received = false
verbose = 1

Prepare crontab file (/srv/mail/cron.d/getmail) for periodically checking for new mail for each user and account:

# /etc/cron.d/getmail: system-wide crontab for getmail
SHELL=/bin/sh

# m h dom mon dow user  command
*/20 *  *   *   * user  ACC="user-refilter" && (date; flock -n ~/.getmail/lock-$ACC getmail --rcfile="getmailrc-$ACC" --idle Refilter) >>"/var/log/getmail/$ACC.log" 2>&1
*/20 *  *   *   * user  ACC="[email protected]" && (date; flock -n ~/.getmail/lock-$ACC getmail --rcfile="getmailrc-$ACC" --idle INBOX) >>"/var/log/getmail/$ACC.log" 2>&1

Do not forget to place your SSL certificates as /srv/mail/ssl/dovecot.crt and /srv/mail/ssl/dovecot.key. SSL is required!

And finally start it with docker:

$ docker run -d -v /srv/mail/home:/home -v /srv/mail/cron.d:/etc/cron.d -v /srv/mail/ssl:/etc/ssl/private:ro -p 143 -p 993 -p 4190 --name mail gw000/dovecot-getmail

Or use docker-compose (check out docker-compose.example.yml).

Users are created automatically with default password (replaceMeNow) on first start. To reset user passwords (of a running container):

$ docker exec -it mail passwd user

⁠Feedback

If you encounter any bugs or have feature requests, please file them in the issue tracker⁠ or even develop it yourself and submit a pull request over GitHub⁠.

⁠License

Copyright © 2016-2021 gw0 [http://gw.tnode.com/⁠] <[email protected]⁠>

This library is licensed under the GNU Affero General Public License 3.0+⁠ (AGPL-3.0+). Note that it is mandatory to make all modifications and complete source code of this library publicly available to any user.

Tag summary

Content type

Image

Digest

Size

54 MB

Last updated

over 5 years ago

docker pull gw000/dovecot-getmail