AntiSpamGateway: jsmtpd-plugin-config.xml

File jsmtpd-plugin-config.xml, 7.3 kB (added by jfp, 3 years ago)
Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <jsmtpdsetup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="jsmtpd-plugin-config.xsd">
3         <ACLSetup name="Ldap ACL" class="org.jsmtpd.plugins.acls.LdapACL">
4                 <propertyset name="adminBindDn" value="cn=directoryAdministor,dc=jsmtpd,dc=org"/><!-- admin dn to bind on ldap server -->
5                 <propertyset name="adminBindPassword" value="it's my top secret password"/> <!-- admin password -->
6                 <propertyset name="ldapUrl" value="ldap://address.of.the.ldap.server/"/> <!-- url of the ldap server -->
7                 <propertyset name="ldapUserProvider" value="ou=people,dc=jsmtpd,dc=org"/> <!-- The branch in the DIT holding user objects (posix/shadow accounts) -->
8                 <propertyset name="ldapNetworkProvider" value="ou=networks,dc=jsmtpd,dc=org"/> <!-- The branch holding the network objects -->
9         </ACLSetup>
10
11         <DNSSetup class="org.jsmtpd.plugins.dnsServices.DNSJavaResolver" name="DNS Java">
12                 <propertyset name="dnsServers" value="ip.of.dns.server"/> <!-- DNS server used -->
13         </DNSSetup>
14
15         <LocalDeliveryService name="relay to io" class="org.jsmtpd.plugins.deliveryServices.SMTPRelay">
16                 <!-- local mail is relayed to io.jsmtpd.org, of course io.jsmtpd.org has to accept theses connections -->
17                 <propertyset name="relay" value="213.251.163.82"/>
18                 <propertyset name="smtpPort" value="25"/>
19         </LocalDeliveryService>
20        
21         <RemoteDeliveryService name="Remote smtp sender" class="org.jsmtpd.plugins.deliveryServices.RemoteSmtpSender">
22         </RemoteDeliveryService><!-- Outgoing mail is sent directly by this instance of Jsmtpd -->
23        
24         <smtpExtensions>
25                 <smtpExtension name="tls" class="org.jsmtpd.plugins.smtpExtension.TLSSwitcher"> <!-- A plugin allowing to change clear connection to SSL connection -->
26                         <propertyset name="keystoreName" value="keystore"/> <!-- must be in classpath, eg etc/ by example. It's holding the server's SSL cert -->
27                         <propertyset name="keystorePassword" value="password_of_your_keystore"/> <!-- A password for the file holding the cert -->
28                 </smtpExtension>
29                 <smtpExtension name="auth" class="org.jsmtpd.plugins.smtpExtension.LdapAuthenticator">
30                         <propertyset name="adminBindDn" value="cn=directoryAdministor,dc=jsmtpd,dc=org"/>
31                         <propertyset name="adminBindPassword" value="it's my top secret password"/>
32                         <propertyset name="ldapUrl" value="ldap://address.of.the.ldap.server/"/>
33                         <propertyset name="ldapUserProvider" value="ou=people,dc=jsmtpd,dc=org"/>
34                         <propertyset name="ldapUserPassword" value="userPassword"/><!-- It specifies the name of the attribute holding users password. With shaddowAccount  object class, this is userPassword -->
35                 </smtpExtension>
36                 <!-- The greylist / SPF checker, see dev.jsmtpd.org for details -->
37                 <smtpExtension name="Greylist SPF" class="org.jsmtpd.plugins.smtpExtensions.GreyList"/>
38         </smtpExtensions>
39        
40         <filtersetup>
41                 <!-- This filter always says true -->
42                 <filterInit name="chainvalid" class="org.jsmtpd.plugins.filters.builtin.ChainSucces">
43                 </filterInit>
44                 <!-- connectes to a spamassassin daemon (daemon) by TCP connection -->
45                 <filterInit name="antispam" class="org.jsmtpd.plugins.filters.SA.SAFilter">
46                         <propertyset name="spamdHost" value="spamd.server.mydomain.com"/> <!-- Change to your Spamassassin server ip -->
47                         <propertyset name="spamdPort" value="783"/><!-- Spamd default port -->
48                         <propertyset name="socketTimeout" value="45"/> <!-- Spamd has 45 secs to process the mail, after the plugin disconnects -->
49                         <propertyset name="skipIfSizeMore" value="524288"/><!-- Most spam are small, the plugin will not scan big mail that are likely not spams -->
50                 </filterInit>
51                
52                 <!-- connects to a clamav daemon, by tcp connection -->
53                 <filterInit name="antivirus" class="org.jsmtpd.plugins.filters.ClamAV.ClamAVFilter">
54                         <propertyset name="clamdHost" value="spamd.server.mydomain.com"/> <!-- Change to your ClamAV server ip -->
55                         <propertyset name="clamdPort" value="3310"/><!-- clamd default port -->
56                         <propertyset name="socketTimeout" value="45"/>
57                         <propertyset name="failOnError" value="true"/> <!-- If there is a virus in the mail, drop it regardless of the state of the filter tree -->
58                 </filterInit>
59
60                 <!-- Query realtime black list servers. Theses are in fact DNS requests against free services -->
61                 <filterInit class="org.jsmtpd.plugins.inputIPFilters.RBLFilter" name="rtBlackList">
62                         <propertyset name="bypassLocal" value="true"></propertyset>
63                         <propertyset name="RBLServer" value="sbl-xbl.spamhaus.org"></propertyset>
64                         <propertyset name="RBLServer" value="whois.rfc-ignorant.org"></propertyset>
65                         <propertyset name="RBLServer" value="relays.ordb.org"></propertyset>
66                 </filterInit>
67                
68                 <!-- Ip registered here are rejected upon connection -->
69                 <filterInit class="org.jsmtpd.plugins.inputIPFilters.ExpireBlackList" name="blacklist">
70                                 <!-- Incoming connections from ACL's relayed host bypass this plugin -->
71                                 <propertyset name="bypassLocal" value="true"></propertyset>
72                                 <propertyset name="blacklistedIP" value="ip.of.a.smtp"></propertyset>
73                                 <!-- List is truncated ;) -->
74                 </filterInit>
75                
76                 <!-- This is the ldap aliases rewriter. When someone sends me a mail at jfp@jsmtpd.org, it is changed by this plugin to my real system mailbox -->
77                 <!-- info about replacements is gathered from the ldap server -->
78                 <filterInit class="org.jsmtpd.plugins.filters.ldap.LdapBodyRewriter" name="ldap rewriter">
79                                 <propertyset name="adminBindDn" value="cn=directoryAdministor,dc=jsmtpd,dc=org"/>
80                                 <propertyset name="adminBindPassword" value="it's my top secret password"/>
81                                 <propertyset name="ldapUrl" value="ldap://address.of.the.ldap.server/"/>
82                                 <propertyset name="ldapUserProvider" value="ou=people,dc=jsmtpd,dc=org"/>
83                 </filterInit>
84                
85                 <!-- The filter to attach signs -->
86                 <!-- A snippet is a template of sign -->
87                 <filterInit name="ReplaceSnippet" class="org.jsmtpd.plugins.filters.snippets.ReplaceSnippetFilter">
88                         <propertyset name="path" value="path/to/snippets/"/>
89                         <propertyset name="prefix" value="--"/>
90                         <propertyset name="suffix" value=""/>
91                  </filterInit>
92                 </filterInit-->
93
94         </filtersetup>
95         <inputIPFilterChain>
96                         <ipFilter name="blacklist"/>
97                         <ipFilter name="rtBlackList"/>
98         </inputIPFilterChain>
99         <!-- Filter the email contents folowing this tree, plugin names must be something loaded in filtersetup -->
100         <!-- My strategy is to drop mail containing viruses -->
101         <!-- Then recipients are rewritten -->
102         <!-- After the are filtered by spam assassin -->
103         <!-- Finnaly mails tagged spam and legitimate mails get snippet attached -->
104         <!-- I do not drop spam mails tagged by spam assassin, in case spamassin takes a wrong decision -->
105         <!-- I also read spam headers some times, it gives ideas of filter plugins ;) -->
106         <!-- Spam mails are rewritten by spamassin: it adds a X-SPAM-FLAG field. On my mail client, a simple rule to move suspected spam (mail containing this header) to a separate folder -->
107         <bodyFilterTree>
108                 <filter name="antivirus">
109                         <true>
110                                 <filter name="ldap rewriter">
111                                         <true>
112                                                 <filter name="antispam">
113                                                         <true>
114                                                                 <filter name="ReplaceSnippet">
115                                                                                         <true/>
116                                                                                         <false/>
117                                                                                 </filter>
118                                                         </true>
119                                                         <false>
120                                                                 <filter name="ReplaceSnippet">
121                                                                                         <true/>
122                                                                                         <false/>
123                                                                 </filter>
124                                                         </false>
125                                                 </filter>
126                                         </true>
127                                         <false/>
128                                 </filter>
129                         </true>
130                         <false/>
131                 </filter>
132         </bodyFilterTree>
133
134 </jsmtpdsetup>