Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Probesys/agentj
AgentJ is a free software anti-spam solution with human authentication and admin panel
https://github.com/Probesys/agentj
antispam docker mail spam
Last synced: 3 months ago
JSON representation
AgentJ is a free software anti-spam solution with human authentication and admin panel
- Host: GitHub
- URL: https://github.com/Probesys/agentj
- Owner: Probesys
- License: agpl-3.0
- Created: 2020-08-06T14:04:50.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-04-09T07:53:26.000Z (7 months ago)
- Last Synced: 2024-04-09T08:49:51.691Z (7 months ago)
- Topics: antispam, docker, mail, spam
- Language: CSS
- Homepage: https://agentj.io/
- Size: 10.5 MB
- Stars: 17
- Watchers: 10
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
- awesome-opensource-email - AgentJ - AgentJ is a free software anti-spam solution with human authentication and admin panel - `AGPL`, `PHP` (Sending / SPAM Filtering)
README
# AgentJ dockerized repository
This is the Docker stack to set up a fully functional AgentJ antispam system at a glance.
## Introduction
The AgentJ Docker stack is composed of the following services:
- **db**: a MariaDB instance, it keeps track of the mail headers and other information needed to manage the e-mails life cycle (sender, recipient, amavis id, ...)
- **app**: a Web UI that allows you to add and manage your domains and associated users as well as managing the incoming e-mails (block, release, white/black lists)
- **smtp**: a Postfix instance that will receive the e-mails and forward them to the **amavis** container (Amavis/ClamAV/Spamassassin service)
- **amavis**: a container running Amavis/Spamassassin and ClamAV services
- **logspout + syslogng**: a Syslog-NG instance that will collect and centralize logs from the other containers
- **relay**: an other Postfix instance, needed to avoid loops when forwarding the released or white-listed e-mails to their recipients(s)## Get the sources
All you have to do is to clone the repository
git clone https://github.com/Probesys/agentj.git
then, `cd` to the cloned repository to configure a few variables:
cd agentj
## Configure
### Variables
Variables are defined in the `.env.example`. This file is just a template, you **must** copy and rename it to `.env`:
cp .env.example .env
Then the following runtime variables must be configured in the `.env` file:
| Variable | Default | Use |
|---------------------------|----------------|---------------------------------------------|
| VERSION | | this AgentJ latest prod version |
| COMPOSE_PROJECT_NAME | local | this AgentJ instance name |
| DB_ROOT_PASSWORD | secret | the MariaDB instance root password |
| DB_NAME | agentj | the AgentJ database name |
| DB_USER | agentj | the AgentJ database user name |
| DB_PASSWORD | secret | the AgentJ database password |
| IPV4_NETWORK | 172.42.42 | the AgentJ Docker default network |
| MAIL_HOSTNAME | aj.example.com | the mailname used in postfix configuration |
| MAIL_DOMAINNAME | example.com | the domain name used in relay configuration |
| SUPER_ADMIN_USERNAME | admin | default super admin login |
| SUPER_ADMIN_PASSWORD | Sup3rZECR37 | default super admin password |
| TZ | Europe/Paris | the containers default timezone |
| PROXY_PORT | 8090 | default listening port for web interface |
| PROXY_LISTEN_ADDR | 127.0.0.1 | default listening address for web interface |
| SMTP_PORT | 25 | default listening port for smtp server |
| SMTP_LISTEN_ADDR | 0.0.0.0 | default listening address for smtp server |
| OAUTH_AZURE_CLIENT_SECRET | secret | client secret if using Azure auth |
| OAUTH_AZURE_CLIENT_ID | secret | client ID if using Azure auth |
| ENABLE_AZURE_OAUTH | false | enable Azure OAuth |
| TRUSTED_PROXIES | 172.24.42.1 | default stack gateway |
| CLAMAV_AUTOSTART | true | use the ClamAV instance of this stack |
| CLAMAV_TCPADDRESS | 0.0.0.0 | remote ClamAV server IP address |
| CLAMAV_TCPPORT | 3310 | remote ClamAV server TCP port |### Network
The AgentJ antispam stack has its own Docker bridge and IPv4 subnet which defaults to `172.24.42.0/24` (configurable, see variables table above).
## Use
It is not recommended to launch the stack as *root*. We recommend you to create a dedicated *docker* user (make sure it belongs to the *docker* group).
After you have set the above variables, you can start the stack with following commands:docker-compose up -d
The Web UI will be available at http://hostname:8090.
The default login is `admin` and the default password is `Sup3rZECR37`.## Details
### Volumes
When started, the AgentJ stack will create the following volumes:
- *amavis* : the Amavis databases
- *applogs* : the application logs (cron tasks)
- *clamav* : the ClamAV signatures database
- *db* : the MariaDB databases files
- *logs*: the log files from all containers, centralized by the **syslogng** container
- *opendkim* : DKIM signature and conf files
- *postqueue* : the mail queue### Communication matrix
| from ↓ \ to → | amavis | app | db | relay | smtp | syslog |
|-------------------------|---------------|--------------|--------------|------------|---------------|-------------|
| amavis (10024/tcp) | - | - | ? → 3306/tcp | - | ? → 10025/tcp | ? → 514/udp |
| app (8090/tcp) | ? → 9998/tcp | - | ? → 3306/tcp | ??? | ? → 514/udp | - |
| db (3306/tcp) | - | - | - | - | - | ? → 514/udp |
| relay 25/tcp) | - | - | - | - | - | ? → 514/udp |
| stmp (25/tcp 10025/tcp) | ? → 10024/tcp | - | ? → 3306/tcp | ? → 25/tcp | ? → 514/udp | - |
| syslogng (514/udp) | - | - | - | - | - | ? → 514/udp |## Upgrade
Please read the [dedicated documentation](https://doc.agentj.io/infra/upgrade/) as well as releases notes before upgrading.
Generally speaking, the upgrade processes consists in the following:
docker-compose down
# Change VERSION variable in your `.env` file
docker-compose up -d## About
### License
This work is made available under the GNU Affero General Public License v3.0.
### Development
AgentJ is a [Probesys](https://www.probesys.com) project.