AnonAddy Docker image based on Alpine Linux.
If you are interested, check out my other Docker images!
💡 Want to be notified of new releases? Check out 🔔 Diun (Docker Image Update Notifier) project!
- Features
- Build locally
- Image
- Environment variables
- Volumes
- Ports
- Usage
- Upgrade
- Notes
- Contributing
- License
- Run as non-root user
- Multi-platform image
- s6-overlay as process supervisor
- Traefik as reverse proxy and creation/renewal of Let's Encrypt certificates (see this template)
git clone https://github.com/anonaddy/docker.git docker-anonaddy
cd docker-anonaddy
# Build image and output to docker (default)
docker buildx bake
# Build multi-platform image
docker buildx bake image-all
Following platforms for this image are available:
$ docker run --rm mplatform/mquery anonaddy/anonaddy:latest
Image: anonaddy/anonaddy:latest
* Manifest List: Yes
* Supported platforms:
- linux/amd64
- linux/arm/v6
- linux/arm/v7
- linux/arm64
TZ
: The timezone assigned to the container (defaultUTC
)PUID
: AnonAddy user id (default1000
)PGID
: AnonAddy group id (default1000
)MEMORY_LIMIT
: PHP memory limit (default256M
)UPLOAD_MAX_SIZE
: Upload max size (default16M
)CLEAR_ENV
: Clear environment in FPM workers (defaultyes
)OPCACHE_MEM_SIZE
: PHP OpCache memory consumption (default128
)LISTEN_IPV6
: Enable IPv6 for Nginx (defaulttrue
)REAL_IP_FROM
: Trusted addresses that are known to send correct replacement addresses (default0.0.0.0/32
)REAL_IP_HEADER
: Request header field whose value will be used to replace the client address (defaultX-Forwarded-For
)LOG_IP_VAR
: Use another variable to retrieve the remote IP address for access log_format on Nginx. (defaultremote_addr
)
APP_NAME
: Name of the application (defaultAnonAddy
)APP_KEY
: Application key for encrypter service. You can generate one throughanonaddy key:generate --show
orecho "base64:$(openssl rand -base64 32)"
. requiredAPP_DEBUG
: Enables or disables debug mode, used to troubleshoot issues (defaultfalse
)APP_URL
: The URL of your AnonAddy installation
💡
APP_KEY_FILE
can be used to fill in the value from a file, especially for Docker's secrets feature.
ANONADDY_RETURN_PATH
: Return-path header for outbound emailsANONADDY_ADMIN_USERNAME
: If set this value will be used and allow you to receive forwarded emails at the root domainANONADDY_ENABLE_REGISTRATION
: If set to false this will prevent new users from registering on the site (defaulttrue
)ANONADDY_DOMAIN
: Root domain to receive email from requiredANONADDY_HOSTNAME
: FQDN hostname for your server used to validate records on custom domains that are added by usersANONADDY_DNS_RESOLVER
: Custom domains that are added by users to validate records (default127.0.0.1
)ANONADDY_ALL_DOMAINS
: Other domains to useANONADDY_SECRET
: Long random string used when hashing data for the anonymous replies requiredANONADDY_LIMIT
: Number of emails a user can forward and reply per hour (default200
)ANONADDY_BANDWIDTH_LIMIT
: Monthly bandwidth limit for users in bytes domains to use (default104857600
)ANONADDY_NEW_ALIAS_LIMIT
: Number of new aliases a user can create each hour (default10
)ANONADDY_ADDITIONAL_USERNAME_LIMIT
: Number of additional usernames a user can add to their account (default3
)ANONADDY_SIGNING_KEY_FINGERPRINT
: GPG key used to sign forwarded emails. Should be the same as your mail from email address
💡
ANONADDY_SECRET_FILE
can be used to fill in the value from a file, especially for Docker's secrets feature.
DB_HOST
: MySQL database hostname / IP address requiredDB_PORT
: MySQL database port (default3306
)DB_DATABASE
: MySQL database name (defaultanonaddy
)DB_USERNAME
: MySQL user (defaultanonaddy
)DB_PASSWORD
: MySQL passwordDB_TIMEOUT
: Time in seconds after which we stop trying to reach the MySQL server (useful for clusters, default60
)
💡
DB_USERNAME_FILE
andDB_PASSWORD_FILE
can be used to fill in the value from a file, especially for Docker's secrets feature.
REDIS_HOST
: Redis hostname / IP addressREDIS_PORT
: Redis port (default6379
)REDIS_PASSWORD
: Redis password
MAIL_FROM_NAME
: From name (defaultAnonAddy
)MAIL_FROM_ADDRESS
: From email address (defaultanonaddy@${ANONADDY_DOMAIN}
)
POSTFIX_DEBUG
: Enable debug (defaultfalse
)POSTFIX_SMTPD_TLS
: Enabling TLS in the Postfix SMTP server (defaultfalse
)POSTFIX_SMTPD_TLS_CERT_FILE
: File with the Postfix SMTP server RSA certificate in PEM formatPOSTFIX_SMTPD_TLS_KEY_FILE
: File with the Postfix SMTP server RSA private key in PEM formatPOSTFIX_SMTP_TLS
: Enabling TLS in the Postfix SMTP client (defaultfalse
)POSTFIX_RELAYHOST
: Default host to send mail toPOSTFIX_RELAYHOST_AUTH_ENABLE
: Enable client-side authentication for relayhost (defaultfalse
)POSTFIX_RELAYHOST_USERNAME
: Postfix SMTP Client username for relayhost authenticationPOSTFIX_RELAYHOST_PASSWORD
: Postfix SMTP Client password for relayhost authentication
DKIM_ENABLE
: Enable OpenDKIM service. (defaultfalse
)DKIM_REPORT_ADDRESS
: Specifies the string to use in theFrom:
header field for outgoing reports (defaultpostmaster@${ANONADDY_DOMAIN}
)
⚠️ DKIM private key must be located in/data/dkim/${ANONADDY_DOMAIN}.private
. You can generate a DKIM private/public keypair by following this note.
⚠️ OpenDKIM service is disabled if DKIM private key is not found
DMARC_ENABLE
: Enable OpenDMARC service. (defaultfalse
)DMARC_FAILURE_REPORTS
: Enables generation of failure reports when the DMARC test fails (defaultfalse
)DMARC_MILTER_DEBUG
: Sets the debug level to be requested from the milter library (default0
)
/data
: Contains storage
⚠️ Note that the volume should be owned by the user/group with the specifiedPUID
andPGID
. If you don't give the volume correct permissions, the container may not start.
8000
: HTTP port25
: SMTP port (postfix)
Docker compose is the recommended way to run this image. You can use the following docker compose template, then run the container:
docker-compose up -d
docker-compose logs -f
You can upgrade AnonAddy automatically through the UI, it works well. But I recommend to recreate the container whenever I push an update:
docker-compose pull
docker-compose up -d
If you want to use the artisan command to perform common server operations like manage users, passwords and more, type:
docker-compose exec anonaddy anonaddy <command>
For example to list all available commands:
docker-compose exec anonaddy anonaddy list
docker-compose exec anonaddy anonaddy anonaddy:create-user "username" "webmaster@example.com"
docker-compose run --entrypoint '' anonaddy gen-dkim
opendkim-genkey: generating private key
opendkim-genkey: private key written to example.com.private
opendkim-genkey: extracting public key
opendkim-genkey: DNS TXT record written to example.com.txt
The keypair will be available in /data/dkim
.
If you don't have an existing GPG key, you can generate a new GPG key with the following command:
docker-compose exec --user anonaddy anonaddy gpg --full-gen-key
Keys will be stored in /data/.gnupg
folder.
Want to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You can also support this project by becoming a sponsor on GitHub or by making a Paypal donation to ensure this journey continues indefinitely!
Thanks again for your support, it is much appreciated! 🙏
MIT. See LICENSE
for more details.