Add basic spamassassin support

master
Pierre Jaury 9 years ago
parent 47272df96b
commit 9df197f412

@ -5,7 +5,7 @@ RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get install -y --no-install-recommends \ && apt-get install -y --no-install-recommends \
postfix dovecot-imapd dovecot-sqlite dovecot-lmtpd \ postfix dovecot-imapd dovecot-sqlite dovecot-lmtpd \
dovecot-sieve dovecot-managesieved \ dovecot-sieve dovecot-managesieved \
dovecot-antispam spamassassin clamav \ dovecot-antispam spamassassin spamc clamav \
supervisor rsyslog \ supervisor rsyslog \
&& apt-get clean && apt-get clean

@ -16,8 +16,8 @@ same level of functionality and still be able to host a complete mail server
at little cost while running only FOSS, applying the KISS principle and being at little cost while running only FOSS, applying the KISS principle and being
able to fine-tune some details if needed. able to fine-tune some details if needed.
Architecture General architecture
============ ====================
The mail infrastructure is based on a standard MTA-LDA : The mail infrastructure is based on a standard MTA-LDA :
@ -33,6 +33,21 @@ Additional Web UI :
All components are monitored by supervisord. All components are monitored by supervisord.
Incoming e-mail
===============
Incoming e-mail is received by postfix, according to the workflow:
- ``smtpd`` receives the message;
- the domain is checked against the ``domains`` table;
- if the domain matches an active domain or the source address is allowed relay, continue;
- the mail is forwarded to Spamassassin, which appends some headers;
- the mail is fowarded to Dovecot using ``lmtp``;
- the local part and domain are checked against the ``users`` table;
- the user quota is checked;
- the mail is delivered to the local maildir.
TODO TODO
==== ====
@ -41,8 +56,9 @@ This is more of a roadmap than a proper TODO list. Please poke me or pull
request if you would like to join the effort. request if you would like to join the effort.
- [x] Import vmm configuration files and get a simple postfix/dovecot running with SQLite. - [x] Import vmm configuration files and get a simple postfix/dovecot running with SQLite.
- [ ] Add support for spamassassin. - [x] Add support for spamassassin.
- [ ] Add support for clamav. - [ ] Add support for clamav.
- [ ] Learn from user-defined spam or ham.
- [ ] Draft a Web administration UI. - [ ] Draft a Web administration UI.
- [ ] Implement basic features from the free (as in beer) poste.io. - [ ] Implement basic features from the free (as in beer) poste.io.
- [ ] Start using on a couple production mail servers. - [ ] Start using on a couple production mail servers.

@ -3,6 +3,7 @@
# Exposed SMTP services # Exposed SMTP services
smtp inet n - - - - smtpd smtp inet n - - - - smtpd
-o content_filter=spamassassin
submission inet n - - - - smtpd submission inet n - - - - smtpd
-o smtpd_enforce_tls=yes -o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes -o smtpd_sasl_auth_enable=yes
@ -13,6 +14,7 @@ smtps inet n - - - - smtpd
-o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# Internal postfix services # Internal postfix services
pickup fifo n - n 60 1 pickup
cleanup unix n - - - 0 cleanup cleanup unix n - - - 0 cleanup
qmgr unix n - n 300 1 qmgr qmgr unix n - n 300 1 qmgr
tlsmgr unix - - - 1000? 1 tlsmgr tlsmgr unix - - - 1000? 1 tlsmgr
@ -31,3 +33,7 @@ discard unix - - - - - discard
lmtp unix - - - - - lmtp lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil anvil unix - - - - 1 anvil
scache unix - - - - 1 scache scache unix - - - - 1 scache
# Utility services
spamassassin unix - n n - - pipe
user=nobody argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

@ -1,6 +1,5 @@
[supervisord] [supervisord]
nodaemon = true nodaemon = true
loglevel=debug
[program:postfix] [program:postfix]
command = /usr/lib/postfix/master -d command = /usr/lib/postfix/master -d
@ -8,5 +7,8 @@ command = /usr/lib/postfix/master -d
[program:dovecot] [program:dovecot]
command = /usr/sbin/dovecot -c /etc/dovecot/dovecot.conf -F command = /usr/sbin/dovecot -c /etc/dovecot/dovecot.conf -F
[program:spamassassin]
command = /usr/sbin/spamd
[program:rsyslog] [program:rsyslog]
command = rsyslogd -n command = rsyslogd -n

Loading…
Cancel
Save