smailr 0.5.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/contrib/dovecot-sql.conf +1 -1
- data/contrib/dovecot.conf +2 -2
- data/contrib/exim4.conf +33 -9
- data/lib/smailr/setup.rb +24 -3
- data/lib/smailr.rb +1 -1
- metadata +16 -28
- data/contrib/exim4.spam.conf +0 -281
- data/contrib/install.pp +0 -95
data/contrib/dovecot-sql.conf
CHANGED
@@ -126,7 +126,7 @@ default_pass_scheme = MD5
|
|
126
126
|
# string. For example:
|
127
127
|
|
128
128
|
password_query = \
|
129
|
-
SELECT mailboxes.password AS password, \
|
129
|
+
SELECT '{SHA}' || mailboxes.password AS password, \
|
130
130
|
mailboxes.localpart AS username, \
|
131
131
|
domains.fqdn AS domain \
|
132
132
|
FROM mailboxes, domains \
|
data/contrib/dovecot.conf
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
# Protocols we want to be serving: imap imaps pop3 pop3s managesieve
|
23
23
|
# If you only want to use dovecot-auth, you can set this to "none".
|
24
24
|
#protocols = imap imaps
|
25
|
-
protocols = imap imaps
|
25
|
+
protocols = imap imaps pop3 pop3s
|
26
26
|
|
27
27
|
# A space separated list of IP or host addresses where to listen in for
|
28
28
|
# connections. "*" listens in all IPv4 interfaces. "[::]" listens in all IPv6
|
@@ -376,7 +376,7 @@ mail_debug = no
|
|
376
376
|
# Show more verbose process titles (in ps). Currently shows user name and
|
377
377
|
# IP address. Useful for seeing who are actually using the IMAP processes
|
378
378
|
# (eg. shared mailboxes or if same uid is used for multiple accounts).
|
379
|
-
|
379
|
+
verbose_proctitle = yes
|
380
380
|
|
381
381
|
# Valid UID range for users, defaults to 500 and above. This is mostly
|
382
382
|
# to make sure that users can't log in as daemons or other system users.
|
data/contrib/exim4.conf
CHANGED
@@ -5,9 +5,11 @@ EXIM_CONF = /etc/exim4
|
|
5
5
|
|
6
6
|
SQLITE_DATABASE_FILE = EXIM_CONF/smailr.sqlite
|
7
7
|
|
8
|
+
DKIM_SELECTOR = mx
|
9
|
+
|
8
10
|
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
|
9
11
|
|
10
|
-
|
12
|
+
TEERGRUBE = 25s
|
11
13
|
|
12
14
|
#############################################################################
|
13
15
|
# Database Queries
|
@@ -93,12 +95,15 @@ message_size_limit = 20M
|
|
93
95
|
# Number of unknown SMTP commands we accept before dropping the connection
|
94
96
|
smtp_max_unknown_commands = 10
|
95
97
|
|
98
|
+
# Drop the sender if they start spewing commands before getting the 220 response
|
99
|
+
smtp_enforce_sync = true
|
100
|
+
|
96
101
|
bounce_return_size_limit = 10K
|
97
102
|
|
98
103
|
# These protections need to take into account MailScanners need to do
|
99
104
|
# MIME explosion.
|
100
|
-
check_spool_inodes
|
101
|
-
check_spool_space
|
105
|
+
check_spool_inodes = 1000
|
106
|
+
check_spool_space = 100M
|
102
107
|
|
103
108
|
# do a reverse DNS lookup on every connection
|
104
109
|
host_lookup = *
|
@@ -139,7 +144,7 @@ av_scanner = clamd:/var/run/clamav/clamd.ctl
|
|
139
144
|
# ACL Configuration
|
140
145
|
|
141
146
|
# We use the following ACLs:
|
142
|
-
acl_smtp_connect =
|
147
|
+
acl_smtp_connect = acl_check_conn
|
143
148
|
acl_smtp_helo = accept
|
144
149
|
acl_smtp_starttls = accept
|
145
150
|
acl_smtp_mail = accept
|
@@ -152,13 +157,18 @@ acl_smtp_expn = deny
|
|
152
157
|
|
153
158
|
begin acl
|
154
159
|
|
155
|
-
|
156
|
-
# Accept
|
157
|
-
|
158
|
-
|
160
|
+
acl_check_conn:
|
161
|
+
# Accept everything from localhost and trustworthy hosts
|
162
|
+
accept hosts = : 127.0.0.1/8 : ::::1 : +relay_from_hosts
|
163
|
+
|
164
|
+
# Play a bit of good/bad cop with senders, by delaying the initial 220
|
165
|
+
# while enforcing SMTP protocol synchronization on both sides.
|
166
|
+
accept delay = ${randint:5}s
|
159
167
|
|
168
|
+
|
169
|
+
acl_check_rcpt:
|
160
170
|
# Accept everything from localhost
|
161
|
-
accept hosts = 127.0.0.1/8 : ::::1
|
171
|
+
accept hosts = : 127.0.0.1/8 : ::::1
|
162
172
|
|
163
173
|
# Deny if the local part contains @ or % or / or | or !. These are rarely
|
164
174
|
# found in genuine local parts, but are often tried by people looking to
|
@@ -178,6 +188,14 @@ acl_check_rcpt:
|
|
178
188
|
!verify = reverse_host_lookup
|
179
189
|
delay = TEERGRUBE
|
180
190
|
|
191
|
+
# Check ip against RBLs
|
192
|
+
deny message = REJECTED - ${sender_host_address} is blacklisted at $dnslist_domain ($dnslist_value); ${dnslist_text}
|
193
|
+
!dnslists = hostkarma.junkemailfilter.com=127.0.0.1,127.0.0.3
|
194
|
+
dnslists = zen.spamhaus.org/<;$sender_host_address;$sender_address_domain :\
|
195
|
+
hostkarma.junkemailfilter.com=127.0.0.2 :\
|
196
|
+
nomail.rhsbl.sorbs.net/$sender_address_domain
|
197
|
+
delay = TEERGRUBE
|
198
|
+
|
181
199
|
# Accept if the address is in a local domain, but only if the recipient can
|
182
200
|
# be verified. Otherwise deny. The "endpass" line is the border between
|
183
201
|
# passing on to the next ACL statement (if tests above it fail) or denying
|
@@ -222,6 +240,12 @@ acl_check_data:
|
|
222
240
|
|
223
241
|
begin routers
|
224
242
|
|
243
|
+
system_aliases:
|
244
|
+
debug_print = "R: system_aliases for $local_part@$domain"
|
245
|
+
driver = redirect
|
246
|
+
domains = $primary_hostname
|
247
|
+
data = ${lookup{$local_part}lsearch{/etc/aliases}}
|
248
|
+
|
225
249
|
# Aliases for local mailboxes
|
226
250
|
virtual_alias:
|
227
251
|
debug_print = "R: virtual_alias for $local_part@$domain"
|
data/lib/smailr/setup.rb
CHANGED
@@ -1,12 +1,30 @@
|
|
1
1
|
module Smailr
|
2
2
|
module Setup
|
3
3
|
def self.run
|
4
|
+
|
5
|
+
if Process.euid != 0
|
6
|
+
say "ERROR: YOU ARE NOT RUNNING THIS SCRIPT WITH ROOT PRIVILEGES, EXITING."
|
7
|
+
exit
|
8
|
+
end
|
9
|
+
|
4
10
|
# This is still hardcoded, required too much brainfuck to deal
|
5
11
|
# with mulitple possible configuration files locations ATM.
|
6
12
|
if File.exists?("/etc/smailr.yml")
|
13
|
+
say "SYSTEM UPGRADE"
|
7
14
|
say "---------------------------------------------------------------------------"
|
8
|
-
say "
|
9
|
-
|
15
|
+
say "You appear to already have a copy of smailr installed. Are you sure you want"
|
16
|
+
say "proceed with the setup routine?"
|
17
|
+
say ""
|
18
|
+
say "This script is going to replace exim and dovecot configuration files"
|
19
|
+
say "from /etc ; Backups of the existing config files will be created!"
|
20
|
+
say ""
|
21
|
+
say "FILES TO BE WRITTEN:"
|
22
|
+
say ""
|
23
|
+
say " - %s" % File.expand_path("exim4.conf", Smailr.config["exim_path"])
|
24
|
+
say " - %s" % File.expand_path("dovecot.conf", Smailr.config["dovecot_path"])
|
25
|
+
say " - %s" % File.expand_path("dovecot-sql.conf", Smailr.config["dovecot_path"])
|
26
|
+
say ""
|
27
|
+
if agree "Continue? [yes/no]"
|
10
28
|
defaults_file = "/etc/smailr.yml"
|
11
29
|
else
|
12
30
|
exit
|
@@ -89,7 +107,10 @@ module Smailr
|
|
89
107
|
end
|
90
108
|
|
91
109
|
def self.setup_mail_spool
|
92
|
-
|
110
|
+
unless Etc.getpwnam("vmail")
|
111
|
+
exec "useradd -r -d #{Smailr.config["mail_spool_path"]} vmail"
|
112
|
+
end
|
113
|
+
|
93
114
|
FileUtils.mkdir_p "#{Smailr.config["mail_spool_path"]}/users"
|
94
115
|
FileUtils.chown "vmail", "vmail", Smailr.config["mail_spool_path"]
|
95
116
|
end
|
data/lib/smailr.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smailr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 4
|
10
|
+
version: 0.5.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Stefan Schlesinger
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-12-10 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: commander
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
type: :runtime
|
33
33
|
version_requirements: *id001
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
35
|
+
name: sequel
|
36
36
|
prerelease: false
|
37
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
38
|
none: false
|
@@ -45,20 +45,6 @@ dependencies:
|
|
45
45
|
version: "0"
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: sequel
|
50
|
-
prerelease: false
|
51
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
|
-
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
hash: 3
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
60
|
-
type: :runtime
|
61
|
-
version_requirements: *id003
|
62
48
|
description: |-
|
63
49
|
Smailr is a CLI tool which lets you manage your Exim/Dovecot setup
|
64
50
|
from the shell. It currently uses SQLite as a backend.
|
@@ -81,8 +67,6 @@ files:
|
|
81
67
|
- contrib/dovecot-sql.conf
|
82
68
|
- contrib/dovecot.conf
|
83
69
|
- contrib/exim4.conf
|
84
|
-
- contrib/exim4.spam.conf
|
85
|
-
- contrib/install.pp
|
86
70
|
- migrations/001_domains.rb
|
87
71
|
- migrations/002_mailboxes.rb
|
88
72
|
- migrations/003_aliases.rb
|
@@ -97,15 +81,19 @@ post_install_message: |+
|
|
97
81
|
|
98
82
|
SMAILR /////////////////////////////////////////////////////////////////
|
99
83
|
|
100
|
-
TO FINISH THE LOCAL SMAILR INSTALLATION
|
101
|
-
|
102
|
-
*
|
84
|
+
TO FINISH THE LOCAL SMAILR INSTALLATION:
|
85
|
+
|
86
|
+
* Install Exim with SQLite support
|
87
|
+
|
88
|
+
* Install Dovecot with SQlite support
|
103
89
|
|
104
|
-
*
|
90
|
+
* run export PATH="/var/lib/gems/1.8/bin:${PATH}"
|
105
91
|
|
106
|
-
*
|
92
|
+
* run "smailr setup" to create exim, dovecot and smailr configuration (you
|
93
|
+
can edit the configuration in an editor window before everyting is
|
94
|
+
initialized)
|
107
95
|
|
108
|
-
*
|
96
|
+
* run "smailr migrate" to initialize the database file
|
109
97
|
|
110
98
|
//////////////////////////////////////////////////////////////// ///////
|
111
99
|
|
@@ -136,7 +124,7 @@ requirements:
|
|
136
124
|
- Dovecot
|
137
125
|
- Debian
|
138
126
|
rubyforge_project:
|
139
|
-
rubygems_version: 1.8.
|
127
|
+
rubygems_version: 1.8.24
|
140
128
|
signing_key:
|
141
129
|
specification_version: 3
|
142
130
|
summary: Simple MAIL manageR - Virtual mail hosting management from the CLI
|
data/contrib/exim4.spam.conf
DELETED
@@ -1,281 +0,0 @@
|
|
1
|
-
#############################################################################
|
2
|
-
# Exim Transactional Mailerver Configuration
|
3
|
-
|
4
|
-
EXIM_CONF = /etc/exim4
|
5
|
-
|
6
|
-
SQLITE_DATABASE_FILE = EXIM_CONF/smailr.sqlite
|
7
|
-
|
8
|
-
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
|
9
|
-
|
10
|
-
DKIM_SELECTOR = mx
|
11
|
-
|
12
|
-
#############################################################################
|
13
|
-
# Database Queries
|
14
|
-
|
15
|
-
VIRTUAL_DOMAINS_SQL = SELECT DISTINCT fqdn FROM domains WHERE fqdn = '${quote_sqlite:$domain}'
|
16
|
-
VIRTUAL_DOMAINS = ${lookup sqlite{SQLITE_DATABASE_FILE VIRTUAL_DOMAINS_SQL}}
|
17
|
-
|
18
|
-
R_VIRTUAL_ALIASES_DATA_SQL = \
|
19
|
-
SELECT aliases.dstlocalpart || '@' || aliases.dstdomain \
|
20
|
-
FROM aliases, domains \
|
21
|
-
WHERE aliases.localpart = '${quote_sqlite:$local_part}' \
|
22
|
-
AND domains.fqdn = '${quote_sqlite:$domain}' \
|
23
|
-
AND aliases.domain_id = domains.id
|
24
|
-
|
25
|
-
R_VIRTUAL_ALIASES_DATA = ${lookup sqlite {SQLITE_DATABASE_FILE R_VIRTUAL_ALIASES_DATA_SQL}{$value}fail}
|
26
|
-
|
27
|
-
R_VIRTUAL_MAILBOX_CONDITION_SQL = \
|
28
|
-
SELECT '/srv/mail/users/' || domains.fqdn || '/' || mailboxes.localpart \
|
29
|
-
FROM mailboxes, domains \
|
30
|
-
WHERE mailboxes.localpart = '${quote_sqlite:$local_part}' \
|
31
|
-
AND domains.fqdn = '${quote_sqlite:$domain}' \
|
32
|
-
AND mailboxes.domain_id = domains.id
|
33
|
-
|
34
|
-
R_VIRTUAL_MAILBOX_CONDITION = ${lookup sqlite{SQLITE_DATABASE_FILE R_VIRTUAL_MAILBOX_CONDITION_SQL}}
|
35
|
-
|
36
|
-
DKIM_PRIVATE_KEY_SQL = \
|
37
|
-
SELECT private_key \
|
38
|
-
FROM dkims, domains \
|
39
|
-
WHERE dkims.selector = 'mx' \
|
40
|
-
AND domains.fqdn = '${quote_sqlite:DKIM_DOMAIN}' \
|
41
|
-
AND dkims.domain_id = domains.id
|
42
|
-
|
43
|
-
DKIM_PRIVATE_KEY = ${lookup sqlite{SQLITE_DATABASE_FILE DKIM_PRIVATE_KEY_SQL}{$value}fail}
|
44
|
-
|
45
|
-
################################################################################
|
46
|
-
# Domain Lists
|
47
|
-
|
48
|
-
domainlist local_domains = @ : VIRTUAL_DOMAINS
|
49
|
-
|
50
|
-
domainlist relay_to_domains =
|
51
|
-
|
52
|
-
hostlist relay_from_hosts =
|
53
|
-
|
54
|
-
#############################################################################
|
55
|
-
# Main Settings
|
56
|
-
|
57
|
-
smtp_banner = $primary_hostname NO UCE/NO UBE ESMTP MTA
|
58
|
-
|
59
|
-
exim_user = Debian-exim
|
60
|
-
exim_group = Debian-exim
|
61
|
-
never_users = root
|
62
|
-
|
63
|
-
daemon_smtp_ports = 25 : 465 : 587
|
64
|
-
|
65
|
-
tls_certificate = /etc/exim4/exim.crt
|
66
|
-
tls_privatekey = /etc/exim4/exim.key
|
67
|
-
tls_advertise_hosts = *
|
68
|
-
|
69
|
-
split_spool_directory = true
|
70
|
-
|
71
|
-
smtp_return_error_details = true
|
72
|
-
|
73
|
-
log_selector = +subject \
|
74
|
-
+address_rewrite \
|
75
|
-
+connection_reject \
|
76
|
-
+delay_delivery \
|
77
|
-
+delivery_size \
|
78
|
-
+dnslist_defer \
|
79
|
-
+lost_incoming_connection \
|
80
|
-
+queue_run \
|
81
|
-
+received_recipients \
|
82
|
-
+sender_on_delivery \
|
83
|
-
+size_reject \
|
84
|
-
+smtp_confirmation \
|
85
|
-
+smtp_protocol_error \
|
86
|
-
+smtp_syntax_error \
|
87
|
-
+tls_cipher \
|
88
|
-
+tls_peerdn
|
89
|
-
|
90
|
-
# Maximum message size
|
91
|
-
message_size_limit = 20M
|
92
|
-
|
93
|
-
# Number of unknown SMTP commands we accept before dropping the connection
|
94
|
-
smtp_max_unknown_commands = 10
|
95
|
-
|
96
|
-
bounce_return_size_limit = 10K
|
97
|
-
|
98
|
-
# These protections need to take into account MailScanners need to do
|
99
|
-
# MIME explosion.
|
100
|
-
check_spool_inodes = 1000
|
101
|
-
check_spool_space = 100M
|
102
|
-
|
103
|
-
# do a reverse DNS lookup on every connection
|
104
|
-
host_lookup = *
|
105
|
-
|
106
|
-
# No RFC 1413 (ident)-lookups
|
107
|
-
rfc1413_hosts = !*
|
108
|
-
|
109
|
-
# Make ESMTP PIPELINING available in all cases
|
110
|
-
pipelining_advertise_hosts = *
|
111
|
-
|
112
|
-
# A bit of good cop / bad cop with helo
|
113
|
-
helo_allow_chars = "_"
|
114
|
-
helo_verify_hosts = !*
|
115
|
-
helo_try_verify_hosts = !*
|
116
|
-
|
117
|
-
# Reverse DNS information is useful
|
118
|
-
helo_lookup_domains = *
|
119
|
-
|
120
|
-
# Send a notification about forzen messages at these intervals
|
121
|
-
delay_warning = 1h:2h:8h:24h:48h:72h
|
122
|
-
|
123
|
-
# Don't send a notification for messages with Precedence:bulk|list|junk
|
124
|
-
delay_warning_condition = "${if match{$h_precedence:}{(?i)bulk|list|junk}{no}{yes}}"
|
125
|
-
|
126
|
-
# Accept 8-bit MIME in Helo and Body.
|
127
|
-
accept_8bitmime
|
128
|
-
|
129
|
-
# Allow to manually specify a envelope-from when submitting local mail
|
130
|
-
local_from_check = false
|
131
|
-
local_sender_retain = true
|
132
|
-
untrusted_set_sender = *
|
133
|
-
|
134
|
-
# Clamav socket
|
135
|
-
av_scanner = clamd:/var/run/clamav/clamd.ctl
|
136
|
-
|
137
|
-
|
138
|
-
#############################################################################
|
139
|
-
# ACL Configuration
|
140
|
-
|
141
|
-
# We use the following ACLs:
|
142
|
-
acl_smtp_connect = accept
|
143
|
-
acl_smtp_helo = accept
|
144
|
-
acl_smtp_starttls = accept
|
145
|
-
acl_smtp_mail = accept
|
146
|
-
acl_smtp_rcpt = acl_check_rcpt
|
147
|
-
acl_smtp_data = acl_check_data
|
148
|
-
|
149
|
-
# We dont allow VRFY/EXPN
|
150
|
-
acl_smtp_vrfy = deny
|
151
|
-
acl_smtp_expn = deny
|
152
|
-
|
153
|
-
begin acl
|
154
|
-
|
155
|
-
acl_check_rcpt:
|
156
|
-
# Accept if source is local SMTP (not over TCP). We do this by testing
|
157
|
-
# for an empty sending host field.
|
158
|
-
accept hosts = :
|
159
|
-
|
160
|
-
# Accept everything from localhost
|
161
|
-
accept hosts = 127.0.0.1/8 : ::::1
|
162
|
-
|
163
|
-
# Deny if the local part contains @ or % or / or | or !. These are rarely
|
164
|
-
# found in genuine local parts, but are often tried by people looking to
|
165
|
-
# circumvent relaying restrictions.
|
166
|
-
deny local_parts = ^.*[@%!/|] : ^\\.
|
167
|
-
|
168
|
-
# Accept authenticated messages.
|
169
|
-
accept authenticated = *
|
170
|
-
|
171
|
-
# Deny relaying on port 587 if not authenticated.
|
172
|
-
deny !authenticated = *
|
173
|
-
condition = ${if eq {$interface_port}{587} {yes}{no}}
|
174
|
-
message = Relaying denied. Proper authentication required on port 587.
|
175
|
-
|
176
|
-
# Teergrube any borken reverse DNS entries.
|
177
|
-
warn message = X-Broken-Reverse-DNS: no host name for IP address $sender_host_address
|
178
|
-
!verify = reverse_host_lookup
|
179
|
-
delay = TEERGRUBE
|
180
|
-
|
181
|
-
# Accept if the address is in a local domain, but only if the recipient can
|
182
|
-
# be verified. Otherwise deny. The "endpass" line is the border between
|
183
|
-
# passing on to the next ACL statement (if tests above it fail) or denying
|
184
|
-
# access (if tests below it fail).
|
185
|
-
accept domains = +local_domains
|
186
|
-
endpass
|
187
|
-
verify = recipient
|
188
|
-
|
189
|
-
# Accept if the address is in a domain for which we are relaying, but again,
|
190
|
-
# only if the recipient can be verified (this saves your secondary
|
191
|
-
# MXes from accepting mail that they then can't send to your primary
|
192
|
-
# MX)
|
193
|
-
accept domains = +relay_to_domains
|
194
|
-
endpass
|
195
|
-
message = unrouteable address
|
196
|
-
verify = recipient/callout=30s/callout_defer_ok
|
197
|
-
|
198
|
-
accept hosts = +relay_from_hosts
|
199
|
-
|
200
|
-
# Reaching the end of the ACL causes a "deny".
|
201
|
-
deny message = <$local_part@$domain>: Relaying denied. Proper authentication required.
|
202
|
-
delay = TEERGRUBE
|
203
|
-
|
204
|
-
|
205
|
-
acl_check_data:
|
206
|
-
|
207
|
-
# Accept if source is local SMTP (i.e. not over TCP/IP). We do this by
|
208
|
-
# testing for an empty sending host field.
|
209
|
-
accept hosts = :
|
210
|
-
|
211
|
-
# Run clamav against the message and reject if it contains malware. This
|
212
|
-
# acl condition will not deny if there is a problem with clamav.
|
213
|
-
deny message = This message contains malware ($malware_name)
|
214
|
-
malware = */defer_ok
|
215
|
-
|
216
|
-
accept
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
#############################################################################
|
221
|
-
# Router Configuration
|
222
|
-
|
223
|
-
begin routers
|
224
|
-
|
225
|
-
# Aliases for local mailboxes
|
226
|
-
virtual_alias:
|
227
|
-
debug_print = "R: virtual_alias for $local_part@$domain"
|
228
|
-
driver = redirect
|
229
|
-
domains = +local_domains
|
230
|
-
allow_fail
|
231
|
-
allow_defer
|
232
|
-
# Lookup the mailbox which we route the message to
|
233
|
-
data = R_VIRTUAL_ALIASES_DATA
|
234
|
-
|
235
|
-
virtual_mailbox:
|
236
|
-
debug_print = "R: virtual_mailbox for $local_part@$domain"
|
237
|
-
driver = accept
|
238
|
-
domains = +local_domains
|
239
|
-
transport = dovecot_virtual_delivery
|
240
|
-
condition = R_VIRTUAL_MAILBOX_CONDITION
|
241
|
-
|
242
|
-
# This router routes to remote hosts over SMTP using a DNS lookup with
|
243
|
-
# default options.
|
244
|
-
dnslookup:
|
245
|
-
debug_print = "R: dnslookup for $local_part@$domain"
|
246
|
-
driver = dnslookup
|
247
|
-
domains = ! +local_domains
|
248
|
-
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
|
249
|
-
cannot_route_message = Unkown user $local_part in domain $domain
|
250
|
-
# Optimization since the dnslookup router is independent of the local part
|
251
|
-
same_domain_copy_routing = yes
|
252
|
-
transport = remote_smtp
|
253
|
-
no_more
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
#############################################################################
|
258
|
-
# Transport Configuration
|
259
|
-
|
260
|
-
begin transports
|
261
|
-
|
262
|
-
remote_smtp:
|
263
|
-
debug_print = "T: remote_smtp for $local_part@$domain"
|
264
|
-
driver = smtp
|
265
|
-
interface = "${lookup {${randint:5}} lsearch {/etc/exim4/source_ip_lookup}}"
|
266
|
-
|
267
|
-
#############################################################################
|
268
|
-
# Rewrites/Retries/Authenticatos
|
269
|
-
|
270
|
-
begin rewrite
|
271
|
-
|
272
|
-
begin retry
|
273
|
-
|
274
|
-
# Retry.. every 10 mins for 2 hours
|
275
|
-
# Then.. every hour for 24 hours
|
276
|
-
# Finaly.. every 6 hours for 4 days
|
277
|
-
|
278
|
-
# Domain Error Retry.. Then.. Finaly..
|
279
|
-
* * F,2h,10m; F,24h,1h; F,4d,6h
|
280
|
-
|
281
|
-
begin authenticators
|
data/contrib/install.pp
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
class smailr::mx
|
2
|
-
{
|
3
|
-
include smailr::params
|
4
|
-
include smailr::mx::common
|
5
|
-
include smailr::mx::exim
|
6
|
-
include smailr::mx::dovecot
|
7
|
-
}
|
8
|
-
|
9
|
-
class smailr::params
|
10
|
-
{
|
11
|
-
$smailr_version = "0.5.0"
|
12
|
-
|
13
|
-
$smailr_mailstorage = "/srv/mail"
|
14
|
-
|
15
|
-
$smailr_contrib = $lsbdistcodename ? {
|
16
|
-
"Debian": "/var/lib/ruby/gems/smailr-${version}/contrib",
|
17
|
-
}
|
18
|
-
|
19
|
-
$exim_package_name = $lsbdistid ? {
|
20
|
-
"Debian": "exim4-daemon-heavy"
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
class smailr::mx::common
|
25
|
-
{
|
26
|
-
user { "vmail":
|
27
|
-
ensure => present,
|
28
|
-
}
|
29
|
-
|
30
|
-
group { "vmail":
|
31
|
-
ensure => present,
|
32
|
-
}
|
33
|
-
|
34
|
-
file {
|
35
|
-
$smailr_mailstorage:
|
36
|
-
ensure => direcotry,
|
37
|
-
owner => "vmail",
|
38
|
-
group => "vmail",
|
39
|
-
mode => 0660,
|
40
|
-
require => User["vmail"];
|
41
|
-
|
42
|
-
"${smailr_mailstorage}/users":
|
43
|
-
ensure => directory,
|
44
|
-
owner => "vmail",
|
45
|
-
group => "vmail",
|
46
|
-
mode => "0660",
|
47
|
-
require => File["/srv/mail"];
|
48
|
-
}
|
49
|
-
|
50
|
-
}
|
51
|
-
|
52
|
-
class smailr::mx::exim
|
53
|
-
{
|
54
|
-
package { "exim4-daemon-heavy":
|
55
|
-
name => $smailr::params::exim_package_name
|
56
|
-
ensure => present,
|
57
|
-
}
|
58
|
-
|
59
|
-
file {
|
60
|
-
"/etc/exim4/exim4.conf":
|
61
|
-
ensure => present,
|
62
|
-
source => "file:///${smailr_contrib}/exim4.conf"
|
63
|
-
require => Package["exim4-daemon-heavy"];
|
64
|
-
|
65
|
-
"/etc/default/exim4":
|
66
|
-
ensure => present,
|
67
|
-
owner => "root",
|
68
|
-
group => "root",
|
69
|
-
source => "file:///${smailr_contrib}/exim4.defaults",
|
70
|
-
require => Package["exim4-daemon-heavy"];
|
71
|
-
}
|
72
|
-
}
|
73
|
-
|
74
|
-
class smailr::mx::dovecot
|
75
|
-
{
|
76
|
-
package { "dovecot-imapd":
|
77
|
-
ensure => present,
|
78
|
-
}
|
79
|
-
|
80
|
-
package { "dovecot-pop3d":
|
81
|
-
ensure => present,
|
82
|
-
}
|
83
|
-
|
84
|
-
file {
|
85
|
-
"/etc/dovecot/dovecot.conf":
|
86
|
-
ensure => present,
|
87
|
-
source => "file:///${smailr_contrib}/dovecot.conf"
|
88
|
-
require => Package["dovecot-imapd"];
|
89
|
-
|
90
|
-
"/etc/dovecot/dovecot.conf":
|
91
|
-
ensure => present,
|
92
|
-
source => "file:///${smailr_contrib}/dovecot-sql.conf"
|
93
|
-
require => Package["dovecot-imapd"];
|
94
|
-
}
|
95
|
-
}
|