BillionMail 是一个未来的开源邮件服务器和电子邮件营销平台,旨在帮助企业和个人轻松管理他们的电子邮件营销活动。无论您是发送新闻通讯、促销邮件还是交易消息,这个工具都将为您的电子邮件营销工作提供完全控制。通过高级分析和客户管理等功能,您将能够像专业人士一样创建、发送和跟踪电子邮件。
# 检查出口 方向 25 端口是否开放
## outlook-com.olc.protection.outlook.com
apt install telnet -y && telnet smtp.google.com 25
# 查看端口占用,Exim, Postfix, Sendmail 等
ss -tulnp | grep :25
git clone https://github.com/aaPanel/BillionMail.git
官方位置:docker-compose.yml
name: billionmail
services:
pgsql-billionmail:
image: postgres:17.4-alpine
hostname: pgsql
volumes:
- ./postgresql-data:/var/lib/postgresql/data
- ./postgresql-socket:/var/run/postgresql
environment:
- TZ=${TZ}
- POSTGRES_DB=${DBNAME}
- POSTGRES_USER=${DBUSER}
- POSTGRES_PASSWORD=${DBPASS}
restart: always
ports:
- "${SQL_PORT:-127.0.0.1:25432}:5432"
networks:
billionmail-network:
aliases:
- pgsql
redis-billionmail:
image: redis:7.4.2-alpine
hostname: redis
entrypoint: ["/bin/sh","/redis-conf.sh"]
volumes:
- ./redis-data:/data
- ./conf/redis/redis-conf.sh:/redis-conf.sh
restart: always
ports:
- "${REDIS_PORT:-127.0.0.1:26379}:6379"
environment:
- TZ=${TZ}
- REDISPASS=${REDISPASS}
sysctls:
- net.core.somaxconn=4096
networks:
billionmail-network:
aliases:
- redis
rspamd-billionmail:
image: billionmail/rspamd:1.2
hostname: rspamd
depends_on:
- redis-billionmail
environment:
- TZ=${TZ}
- REDISPASS=${REDISPASS}
- RETENTION_DAYS=${RETENTION_DAYS:-7}
volumes:
- ./conf/rspamd/local.d:/etc/rspamd/local.d
- ./conf/rspamd/statistic.conf:/etc/rspamd/statistic.conf
- ./conf/rspamd/rspamd.conf:/etc/rspamd/rspamd.conf
- ./rspamd-data:/var/lib/rspamd
- ./logs/rspamd:/var/log/rspamd
restart: always
networks:
billionmail-network:
aliases:
- rspamd
dovecot-billionmail:
image: billionmail/dovecot:1.6
hostname: dovecot
depends_on:
- pgsql-billionmail
- redis-billionmail
cap_add:
- NET_BIND_SERVICE
volumes:
- ./conf/dovecot/conf.d:/etc/dovecot/conf.d
- ./conf/dovecot/dovecot.conf:/etc/dovecot/dovecot.conf
- ./conf/dovecot/rsyslog.conf:/etc/rsyslog.conf
- ./logs/dovecot:/var/log/mail
- ./ssl:/etc/ssl/mail
- ./ssl-self-signed:/etc/ssl/ssl-self-signed
- ./vmail-data:/var/vmail
- ./rspamd-data:/var/lib/rspamd
- ./postgresql-socket:/var/run/postgresql
environment:
- DBNAME=${DBNAME}
- DBUSER=${DBUSER}
- DBPASS=${DBPASS}
- TZ=${TZ}
- BILLIONMAIL_HOSTNAME=${BILLIONMAIL_HOSTNAME}
- REDISPASS=${REDISPASS}
- RETENTION_DAYS=${RETENTION_DAYS:-7}
ports:
- "${IMAP_PORT:-143}:143"
- "${IMAPS_PORT:-993}:993"
- "${POP_PORT:-110}:110"
- "${POPS_PORT:-995}:995"
restart: always
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
networks:
billionmail-network:
aliases:
- dovecot
postfix-billionmail:
image: billionmail/postfix:1.6
hostname: postfix
depends_on:
pgsql-billionmail:
condition: service_started
volumes:
- ./conf/postfix/main.cf:/etc/postfix/main.cf
- ./conf/postfix/master.cf:/etc/postfix/master.cf
- ./conf/postfix/conf:/etc/postfix/conf
- ./conf/postfix/sql:/etc/postfix/sql
- ./conf/postfix/rsyslog.conf:/etc/rsyslog.conf
- ./logs/postfix:/var/log/mail
- ./ssl:/etc/ssl/mail
- ./postfix-data:/var/spool/postfix
- ./rspamd-data:/var/lib/rspamd
- ./postgresql-socket:/var/run/postgresql
environment:
- TZ=${TZ}
- DBNAME=${DBNAME}
- DBUSER=${DBUSER}
- DBPASS=${DBPASS}
- REDISPASS=${REDISPASS}
- BILLIONMAIL_HOSTNAME=${BILLIONMAIL_HOSTNAME}
- RETENTION_DAYS=${RETENTION_DAYS:-7}
cap_add:
- NET_BIND_SERVICE
ports:
- "${SMTP_PORT:-25}:25"
- "${SMTPS_PORT:-465}:465"
- "${SUBMISSION_PORT:-587}:587"
restart: always
networks:
billionmail-network:
aliases:
- postfix
webmail-billionmail:
image: roundcube/roundcubemail:1.6.10-fpm-alpine
hostname: roundcube
depends_on:
- pgsql-billionmail
- dovecot-billionmail
- postfix-billionmail
volumes:
- ./webmail-data:/var/www/html
- ./conf/webmail/mime.types:/var/roundcube/config/mime.types
- ./conf/webmail:/var/roundcube/config
- ./conf/php:/usr/local/etc
- ./php-sock/:/var/run/
environment:
- TZ=${TZ}
- ROUNDCUBEMAIL_DB_TYPE=pgsql
- ROUNDCUBEMAIL_DB_HOST=pgsql
- ROUNDCUBEMAIL_DB_NAME=${DBNAME}
- ROUNDCUBEMAIL_DB_USER=${DBUSER}
- ROUNDCUBEMAIL_DB_PASSWORD=${DBPASS}
- ROUNDCUBEMAIL_DEFAULT_HOST=dovecot
- ROUNDCUBEMAIL_DEFAULT_PORT=${IMAP_PORT:-143}
- ROUNDCUBEMAIL_SMTP_SERVER=postfix
- ROUNDCUBEMAIL_SMTP_PORT=${SMTP_PORT:-25}
- ROUNDCUBEMAIL_REQUEST_PATH=/roundcube
restart: always
networks:
billionmail-network:
aliases:
- webmail
core-billionmail:
image: billionmail/core:4.7.2
hostname: core-manage
depends_on:
- pgsql-billionmail
volumes:
- ./ssl:/etc/ssl/mail
- ./ssl-self-signed:/etc/ssl/ssl-self-signed
- ./conf/core/fail2ban/filter.d:/etc/fail2ban/filter.d
- ./conf/core/fail2ban/jail.d:/etc/fail2ban/jail.d
- ./logs/fail2ban:/var/log/fail2ban
- ./postgresql-socket:/opt/billionmail/postgresql-socket
- ./php-sock:/opt/billionmail/php-sock
- ./rspamd-data:/opt/billionmail/rspamd-data
- ./webmail-data:/opt/billionmail/webmail-data
- ./.env:/opt/billionmail/.env
- ./conf:/opt/billionmail/conf
- ./logs:/opt/billionmail/logs
- ./logs/core:/opt/billionmail/core/logs
- ./core-data:/opt/billionmail/core/data
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./vmail-data:/opt/billionmail/vmail-data
environment:
- TZ=${TZ}
- FAIL2BAN_INIT=${FAIL2BAN_INIT:-y}
cap_add:
- NET_BIND_SERVICE
- NET_ADMIN
- NET_RAW
ports:
- "${HTTP_PORT:-80}:${HTTP_PORT:-80}"
- "${HTTPS_PORT:-443}:${HTTPS_PORT:-443}"
restart: always
networks:
billionmail-network:
aliases:
- core
networks:
billionmail-network:
driver: bridge
driver_opts:
com.docker.network.bridge.name: br-billionmail
ipam:
driver: default
config:
- subnet: ${IPV4_NETWORK:-172.16.1}.0/24
官方位置:.env
# Default Billion Mail Username password
ADMIN_USERNAME=billion
ADMIN_PASSWORD=billion
# Manage Safe entrance
SafePath=billion
# BILLIONMAIL_HOSTNAME configuration, Postfix myhostname configuration
BILLIONMAIL_HOSTNAME=mail.example.com
# pgsql NAME and USER and PASSWORD configuration
DBNAME=billionmail
DBUSER=billionmail
DBPASS=NauF7ysRYyt9HTOiOn4JjIAL3QcRZnzj
# REDIS PASSWORD configuration
REDISPASS=zKLnZQr3riFpcS2lEy3MOtfncztaCGKp
## MAIL Ports
SMTP_PORT=25
SMTPS_PORT=465
SUBMISSION_PORT=587
IMAP_PORT=143
IMAPS_PORT=993
POP_PORT=110
POPS_PORT=995
REDIS_PORT=127.0.0.1:26379
SQL_PORT=127.0.0.1:25432
## Manage Ports
HTTP_PORT=80
HTTPS_PORT=443
# You can use this script to set the time zone for your container.
# See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for a list of timezones"
# echo -e "Use a column named "TZ identifier" + note the column named "Notes""
TZ=Asia/Shanghai
# Default containers IPV4 intranet segment
IPV4_NETWORK=172.16.1
# Enable fail2ban Access restrictions, specify that the IP exceeds the access limit
FAIL2BAN_INIT=y
# Console ip whitelist Disabled:false Enabled:true
IP_WHITELIST_ENABLE=false
# Number of days to keep log backup
RETENTION_DAYS=7
## BillionMail
https://localhost/<SafePath>
##
https://localhost/roundcube