smailr 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
}
|