smailr 0.5.5 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c285dbbec224e60b52df63833918c88f7677a3d4
4
- data.tar.gz: 85b06fd358341fd4f9a73f500fca51b352cb120a
3
+ metadata.gz: a210f85857566e3db628005398f0de0f9f0a512b
4
+ data.tar.gz: 86751942bbe91990eeb678238d64d581ae75bf53
5
5
  SHA512:
6
- metadata.gz: f9011a18cb6cc2ac3f511c1fd91bc781d58e9ceae4ed9b47d05769b2113b06a0b635768178e489b2b91ac60670b41fbc12028510e4c929ee730d82565c7a0bc8
7
- data.tar.gz: f0a7b9f172c6e50df96f07730eb47931a8cfd74ff5ddeddfdacf93ce17e933535c50ad19c875d7bc66379d5cb0c6c6963d9721efcd9925c6479efbb69a570c48
6
+ metadata.gz: 533d32daf44f0561363885a384ca062f78d93925bb3d687b04e9c9250f927d4fe6d80bc91b15c0a68e2decdeb1b6e459216824e61be94d931a264c2c75d5df3b
7
+ data.tar.gz: 84210fefd6cea9d4b30e34af42204fd2b77207ed5329e008594c6d1152274bffe1e231fb011afab0449b58de16e81ec9bbb52ef2664c88d6b001fc2305473ee0
data/README.md CHANGED
@@ -1,13 +1,11 @@
1
- # Smailr - A Virtual Mail Hosting Management CLI (ALPHA)
1
+ # Smailr - A Virtual Mail Hosting Management CLI
2
2
 
3
3
  Smailr is a small CLI application, which lets you manage the database for a
4
- typical Exim/Dovecot stack.
4
+ typical mailserver (examples provided for Exim/Dovecot).
5
5
 
6
6
  Configuration files are provided within the contrib directory, so you should be
7
7
  able to get everything up and running within a couple of minutes.
8
8
 
9
- Please note, Smailr is still in development!
10
-
11
9
  ## Installation
12
10
 
13
11
  Install Packages
data/bin/commander ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'commander' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('commander', 'commander')
data/bin/sequel ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'sequel' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('sequel', 'sequel')
data/bin/smailr CHANGED
@@ -56,7 +56,7 @@ command :add do |c|
56
56
  if options.dkim
57
57
  selector = options.dkim
58
58
  key = Smailr::Dkim.add(address, selector)
59
-
59
+
60
60
  puts "public-key " + key.to_a[1..-2].join.gsub(/\n/, '')
61
61
  else
62
62
  Smailr::Domain.add(address)
@@ -172,17 +172,32 @@ end
172
172
 
173
173
 
174
174
  command :mutt do |c|
175
+ base = Smailr.config["mail_spool_path"]
176
+
175
177
  c.syntax = "smailr mutt address"
176
178
  c.summary = "View the mailbox of the specified address in mutt."
177
179
  c.description = "Open the mailbox of the specified address in mutt.\n\n " +
178
- "Requires that mutt is installed and assumes the default mail\n " +
179
- "storage directory structure: /srv/mail/users/<fqdn>/<localpart>"
180
+ "Requires that mutt is installed and tries to find a suitable maildir in: " + base
180
181
  c.example 'Open test@example.com', 'smailr mutt test@example.com'
181
182
  c.action do |args,options|
182
183
  localpart, fqdn = args[0].split('@')
184
+
183
185
  mutt = `command -v mutt || { echo "Please install mutt first. Aborting." >&2; exit 1; }`
184
186
  if $?
185
- exec "MAIL=/srv/mail/users/#{fqdn}/#{localpart} MAILDIR=$MAIL #{mutt} -mMaildir"
187
+
188
+ possibilities = [
189
+ "#{base}/#{fqdn}/#{localpart}/Maildir",
190
+ "#{base}/users/#{fqdn}/#{localpart}/Maildir",
191
+ "#{base}/users/#{fqdn}/#{localpart}/.maildir",
192
+ "#{base}/users/#{fqdn}/#{localpart}"
193
+ ]
194
+
195
+ possibilities.each do |path|
196
+ if File.readable?(path)
197
+ puts "Opening maildir #{path} with mutt."
198
+ exec "MAIL=#{path} MAILDIR=#{path} #{mutt} -mMaildir"
199
+ end
200
+ end
186
201
  end
187
202
  end
188
203
  end
@@ -126,7 +126,7 @@ default_pass_scheme = MD5
126
126
  # string. For example:
127
127
 
128
128
  password_query = \
129
- SELECT '{SHA}' || mailboxes.password AS password, \
129
+ SELECT mailboxes.password_scheme || 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
@@ -890,7 +890,7 @@ auth default {
890
890
  # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
891
891
  # gss-spnego
892
892
  # NOTE: See also disable_plaintext_auth setting.
893
- mechanisms = plain
893
+ mechanisms = plain login
894
894
 
895
895
  #
896
896
  # Password database is used to verify user's password (and nothing more).
data/contrib/exim4.conf CHANGED
@@ -325,21 +325,18 @@ begin retry
325
325
 
326
326
  begin authenticators
327
327
 
328
+ login:
329
+ driver = dovecot
330
+ public_name = LOGIN
331
+ server_socket = /var/run/dovecot/auth-client
332
+ # setting server_set_id might break several headers in
333
+ # mails sent by authenticated smtp. So be careful.
334
+ server_set_id = $auth1
335
+ client_condition = ${if !eq{$tls_cipher}{}}
336
+
328
337
  plain:
329
- driver = plaintext
338
+ driver = dovecot
330
339
  public_name = PLAIN
331
- server_set_id = $2
332
- server_debug_print = yes
333
- server_prompts = :
334
- server_condition = \
335
- "${if and { \
336
- {!eq{$2}{}} \
337
- {!eq{$3}{}} \
338
- {crypteq{$3}{\\{sha1\\}${lookup sqlite{SQLITE_DATABASE_FILE \
339
- SELECT mailboxes.password \
340
- FROM mailboxes, domains \
341
- WHERE mailboxes.localpart = '${quote_sqlite:${local_part:$auth2}}' \
342
- AND domains.fqdn = '${quote_sqlite:${domain:$auth2}}' \
343
- AND domains.id = mailboxes.domain_id} \
344
- {$value}fail}} }} {yes}{no}}"
340
+ server_socket = /var/run/dovecot/auth-client
341
+ server_set_id = $auth1
345
342
  client_condition = ${if !eq{$tls_cipher}{}}
data/lib/smailr/alias.rb CHANGED
@@ -13,6 +13,8 @@ module Smailr
13
13
  destinations.each do |dst|
14
14
  dstlocalpart, dstdomain = dst.split('@')
15
15
 
16
+ puts "Adding alias: #{source} -> #{dst}"
17
+
16
18
  Model::Alias.find_or_create(:domain => Model::Domain[:fqdn => srcdomain],
17
19
  :localpart => srclocalpart,
18
20
  :dstdomain => dstdomain,
@@ -24,6 +26,8 @@ module Smailr
24
26
  srclocalpart, srcdomain = source.split('@')
25
27
 
26
28
  destinations.each do |dst|
29
+ puts "Removing alias: #{source} -> #{dst}"
30
+
27
31
  dstlocalpart, dstdomain = dst.split('@')
28
32
 
29
33
  Model::Alias.filter(:domain => Model::Domain[:fqdn => srcdomain],
@@ -1,6 +1,8 @@
1
1
  module Smailr
2
2
  module Mailbox
3
3
  def self.add(address, password)
4
+ puts "Adding mailbox: #{address}"
5
+
4
6
  fqdn = address.split('@')[1]
5
7
 
6
8
  if not Model::Domain[:fqdn => fqdn]
@@ -20,6 +22,8 @@ module Smailr
20
22
  end
21
23
 
22
24
  def self.rm(address, options)
25
+ puts "Removing mailbox (from database): #{address}"
26
+
23
27
  mbox = Model::Mailbox.for_address(address)
24
28
  mbox.rm_related
25
29
  mbox.destroy
data/lib/smailr/model.rb CHANGED
@@ -31,6 +31,7 @@ module Smailr
31
31
 
32
32
  def password=(clear)
33
33
  self[:password] = Digest::SHA1.hexdigest(clear)
34
+ self[:password_scheme] = "{SHA}"
34
35
  end
35
36
 
36
37
  def rm_related
data/lib/smailr.rb CHANGED
@@ -6,7 +6,7 @@ require 'commander/import'
6
6
  require 'fileutils'
7
7
 
8
8
  module Smailr
9
- VERSION = '0.5.5'
9
+ VERSION = '0.6.1'
10
10
 
11
11
  autoload :Model, 'smailr/model'
12
12
  autoload :Domain, 'smailr/domain'
@@ -0,0 +1,27 @@
1
+ Sequel.migration do
2
+ up do
3
+ puts <<-MESSAGE
4
+
5
+ WARNING ---------------------------------------------------------------------------------
6
+
7
+ You need to adapt your mailserver configuration with this version of smailr, as
8
+ passwords are now stored including the hash scheme.
9
+
10
+ Select the hash from `mailboxes.password` and the scheme from `mailboxes.password_scheme`
11
+
12
+ --------------------------------------------------------------------------------- WARNING
13
+
14
+ MESSAGE
15
+
16
+ add_column :mailboxes, :password_scheme, String
17
+
18
+ from(:mailboxes).update(password_scheme: "{SHA}")
19
+
20
+ alter_table(:mailboxes) do
21
+ set_column_not_null(:password_scheme)
22
+ end
23
+ end
24
+
25
+ # Downgrade is not supported, as we would drop necessary information do do effective hashing
26
+ # in case this feature was already used to add various hashes to the database
27
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smailr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Schlesinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-23 00:00:00.000000000 Z
11
+ date: 2016-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -39,8 +39,8 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: |-
42
- Smailr is a CLI tool which lets you manage your Exim/Dovecot setup
43
- from the shell. It currently uses SQLite as a backend.
42
+ Smailr is a CLI tool which lets you manage your virtual mailhosting setup
43
+ from the shell. It currently uses SQLite as a backend, samples for Dovecot/Exim provided.
44
44
  email: sts@ono.at
45
45
  executables:
46
46
  - smailr
@@ -48,6 +48,8 @@ extensions: []
48
48
  extra_rdoc_files: []
49
49
  files:
50
50
  - README.md
51
+ - bin/commander
52
+ - bin/sequel
51
53
  - bin/smailr
52
54
  - contrib/dovecot-sql.conf
53
55
  - contrib/dovecot.conf
@@ -63,6 +65,7 @@ files:
63
65
  - migrations/002_mailboxes.rb
64
66
  - migrations/003_aliases.rb
65
67
  - migrations/004_dkims.rb
68
+ - migrations/005_mailboxes_add_digest_identifier_to_passwords.rb
66
69
  - smailr.yml
67
70
  homepage: http://github.com/sts/smailr
68
71
  licenses: []
@@ -106,7 +109,7 @@ requirements:
106
109
  - Dovecot
107
110
  - Debian
108
111
  rubyforge_project:
109
- rubygems_version: 2.4.4
112
+ rubygems_version: 2.4.6
110
113
  signing_key:
111
114
  specification_version: 4
112
115
  summary: Simple MAIL manageR - Virtual mail hosting management from the CLI