No description
Find a file
2025-10-26 07:20:32 +00:00
build Changed /etc/opendkim/keys/ ownership to opendkim:opendkim 2025-10-26 07:20:32 +00:00
.env Add environment option to filter rejected emails 2025-09-28 11:41:07 +00:00
01-setup.sh Remove OCSP 2025-06-12 16:35:21 +00:00
docker-compose.yaml Moved whitelist ahead of policyd-spf check 2025-03-18 00:16:45 +00:00
README.md Update README.md 2025-03-18 04:16:19 +00:00

MyveMail

All-in-one docker container to host your own personal mail server, powered by Postfix mail transfer agent, Dovecot mail delivery agent, MariaDB database and Nginx web server. Webmail client is provided by Roundcube and management is provided by PostfixAdmin. Mail domain services include OpenDKIM and OpenDMARC.

Note: ISP must have SMTP Port 25 open.

:: Pre-installation

Update your DNS registry to reflect the following records

# MX Record
@                       300 IN MX   0   ${subdomain}.${domain}.

# A Record
${subdomain}            300 IN A        ${server-ip-address}

# TXT Records
@                       300 IN TXT      "v=spf1 mx ~all"
${subdomain}            300 IN TXT      "v=spf1 a ~all"
_dmarc                  300 IN TXT      "v=DMARC1; p=none; pct=100; fo=1; rua=mailto:dmarc@${domain}"
default._domainkey      300 IN TXT      "v=DKIM1; h=sha256; k=rsa; p=${opendkim-key}"

# CNAME Records
autoconfig              300 IN CNAME    ${subdomain}.${domain}.
autodiscover            300 IN CNAME    ${subdomain}.${domain}.

Example entries:

server-ip-address=         # Host IPv4 address
subdomain=mail
domain=website.com
opendkim-key=              # Provided by mail.sh

:: Installation

Open the following TCP ports:

25
143
993
587

Clone this repo and build it locally or pull it on the registry specified in docker-compose.yaml:

git clone https://myvelabs.com/docker/mail.git

Supply the variables asked for in 01-setup.sh.

Run 01-setup.sh to install the proxy and Letsencrypt certificates to be used by Postfix and Dovecot. It also generates a functional docker-compose env file.

Note: The container will fail if this step is skipped.

Once completed, the container may be brought up:

docker compose up --detach

:: Post-installation

Once the server comes back online, services can be accessed through:

Roundcube:      https://${subdomain}.${domain}/         (eg, https://mail.website.com/)
PostfixAdmin:   https://${subdomain}.${domain}/admin/   (eg, https://mail.website.com/admin/)