schleuder 3.5.0 → 4.0.0

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -10
  3. data/Rakefile +12 -12
  4. data/bin/schleuder +1 -1
  5. data/db/migrate/20140501103532_create_lists.rb +1 -1
  6. data/db/migrate/20140501112859_create_subscriptions.rb +1 -1
  7. data/db/migrate/{201508092100_add_language_to_lists.rb → 20150809210000_add_language_to_lists.rb} +1 -1
  8. data/db/migrate/20150812165700_change_keywords_admin_only_defaults.rb +1 -1
  9. data/db/migrate/20150813235800_add_forward_all_incoming_to_admins.rb +1 -1
  10. data/db/migrate/{201508141727_change_send_encrypted_only_default.rb → 20150814172700_change_send_encrypted_only_default.rb} +1 -1
  11. data/db/migrate/{201508222143_add_logfiles_to_keep_to_lists.rb → 20150822214300_add_logfiles_to_keep_to_lists.rb} +1 -1
  12. data/db/migrate/{201508261723_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb → 20150826172300_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb} +1 -1
  13. data/db/migrate/{201508261815_strip_gpg_passphrase.rb → 20150826181500_strip_gpg_passphrase.rb} +1 -1
  14. data/db/migrate/{201508261827_remove_default_mime.rb → 20150826182700_remove_default_mime.rb} +1 -1
  15. data/db/migrate/20160501172700_fix_headers_to_meta_defaults.rb +1 -1
  16. data/db/migrate/20170713215059_add_internal_footer_to_list.rb +1 -1
  17. data/db/migrate/20180110203100_add_sig_enc_to_headers_to_meta_defaults.rb +1 -1
  18. data/db/migrate/20180723173900_add_deliver_selfsent_to_list.rb +1 -1
  19. data/db/migrate/20190906194820_add_autocrypt_header_to_list.rb +1 -1
  20. data/db/migrate/20200118170110_add_set_reply_to_to_sender_and_munge_from.rb +15 -0
  21. data/db/schema.rb +45 -45
  22. data/etc/list-defaults.yml +18 -0
  23. data/etc/postfix/schleuder_sqlite.cf +1 -1
  24. data/etc/schleuder-weekly-key-maintenance.service +9 -0
  25. data/etc/schleuder-weekly-key-maintenance.timer +9 -0
  26. data/etc/schleuder.yml +3 -3
  27. data/lib/schleuder-api-daemon/helpers/schleuder-api-daemon-helper.rb +3 -3
  28. data/lib/schleuder-api-daemon/routes/subscription.rb +4 -4
  29. data/lib/schleuder.rb +10 -12
  30. data/lib/schleuder/cli.rb +9 -188
  31. data/lib/schleuder/cli/cert.rb +2 -2
  32. data/lib/schleuder/cli/cli_helper.rb +14 -0
  33. data/lib/schleuder/cli/schleuder_cert_manager.rb +4 -4
  34. data/lib/schleuder/conf.rb +10 -4
  35. data/lib/schleuder/errors/base.rb +2 -2
  36. data/lib/schleuder/errors/decryption_failed.rb +1 -1
  37. data/lib/schleuder/errors/fatal_error.rb +1 -1
  38. data/lib/schleuder/errors/key_adduid_failed.rb +1 -1
  39. data/lib/schleuder/errors/key_generation_failed.rb +1 -1
  40. data/lib/schleuder/errors/message_empty.rb +1 -1
  41. data/lib/schleuder/errors/message_too_big.rb +1 -1
  42. data/lib/schleuder/errors/too_many_keys.rb +1 -1
  43. data/lib/schleuder/filters/post_decryption/10_request.rb +3 -3
  44. data/lib/schleuder/filters/post_decryption/20_max_message_size.rb +1 -1
  45. data/lib/schleuder/filters/post_decryption/30_forward_to_owner.rb +1 -1
  46. data/lib/schleuder/filters/post_decryption/40_receive_admin_only.rb +1 -1
  47. data/lib/schleuder/filters/post_decryption/50_receive_authenticated_only.rb +1 -1
  48. data/lib/schleuder/filters/post_decryption/60_receive_signed_only.rb +1 -1
  49. data/lib/schleuder/filters/post_decryption/70_receive_encrypted_only.rb +1 -1
  50. data/lib/schleuder/filters/post_decryption/80_receive_from_subscribed_emailaddresses_only.rb +1 -1
  51. data/lib/schleuder/filters/pre_decryption/10_forward_bounce_to_admins.rb +1 -1
  52. data/lib/schleuder/filters/pre_decryption/30_send_key.rb +1 -1
  53. data/lib/schleuder/filters/pre_decryption/40_fix_exchange_messages.rb +1 -1
  54. data/lib/schleuder/filters/pre_decryption/50_strip_html_from_alternative.rb +2 -2
  55. data/lib/schleuder/filters_runner.rb +9 -9
  56. data/lib/schleuder/gpgme/ctx.rb +15 -35
  57. data/lib/schleuder/gpgme/key.rb +4 -136
  58. data/lib/schleuder/gpgme/user_id.rb +2 -0
  59. data/lib/schleuder/keyword_handlers/attach_list_key.rb +17 -0
  60. data/lib/schleuder/keyword_handlers/base.rb +36 -0
  61. data/lib/schleuder/keyword_handlers/get_version.rb +11 -0
  62. data/lib/schleuder/keyword_handlers/key_management.rb +141 -0
  63. data/lib/schleuder/keyword_handlers/list_management.rb +19 -0
  64. data/lib/schleuder/keyword_handlers/resend.rb +208 -0
  65. data/lib/schleuder/keyword_handlers/sign_this.rb +54 -0
  66. data/lib/schleuder/keyword_handlers/subscription_management.rb +213 -0
  67. data/lib/schleuder/keyword_handlers_runner.rb +146 -0
  68. data/lib/schleuder/list.rb +28 -40
  69. data/lib/schleuder/list_builder.rb +16 -5
  70. data/lib/schleuder/listlogger.rb +1 -1
  71. data/lib/schleuder/mail/message.rb +135 -40
  72. data/lib/schleuder/runner.rb +18 -16
  73. data/lib/schleuder/subscription.rb +35 -13
  74. data/lib/schleuder/validators/boolean_validator.rb +1 -1
  75. data/lib/schleuder/validators/email_validator.rb +1 -1
  76. data/lib/schleuder/validators/fingerprint_validator.rb +1 -1
  77. data/lib/schleuder/validators/greater_than_zero_validator.rb +1 -1
  78. data/lib/schleuder/validators/no_line_breaks_validator.rb +1 -1
  79. data/lib/schleuder/version.rb +1 -1
  80. data/locales/de.yml +49 -36
  81. data/locales/en.yml +34 -21
  82. metadata +119 -54
  83. data/bin/pinentry-clearpassphrase +0 -72
  84. data/lib/schleuder/plugin_runners/base.rb +0 -91
  85. data/lib/schleuder/plugin_runners/list_plugins_runner.rb +0 -24
  86. data/lib/schleuder/plugin_runners/request_plugins_runner.rb +0 -27
  87. data/lib/schleuder/plugins/attach_listkey.rb +0 -13
  88. data/lib/schleuder/plugins/get_version.rb +0 -7
  89. data/lib/schleuder/plugins/key_management.rb +0 -138
  90. data/lib/schleuder/plugins/list_management.rb +0 -15
  91. data/lib/schleuder/plugins/resend.rb +0 -199
  92. data/lib/schleuder/plugins/sign_this.rb +0 -46
  93. data/lib/schleuder/plugins/subscription_management.rb +0 -207
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49f682bc409302cde8907906dbbbab0238d4e404748874b5c3b263806b70abbe
4
- data.tar.gz: c47b37fc7c1dede5b95bd396ceef0642cf5061af574a589b84497e01d1f7dcf8
3
+ metadata.gz: 71fae6520fb76978d0292533c7e4b1d4ed72cd881ba81be71eacd2ab1811d5e2
4
+ data.tar.gz: 5542044280bcd7bb2875bdc443c37146c490fe186a16c9d2449d8d9dab8131c9
5
5
  SHA512:
6
- metadata.gz: 42706627c3b2ea15d6e735cc28fcaa34a4bcd4cf58bb6789edd5ce83ba8033e10259a16cd61e06d5d2a25f01aa55a25f9a03073a5a03683cab2dc093a04e1103
7
- data.tar.gz: b5b784eafd81435118bac61ce089d36e45e0932c46816aa46ae3da199fa96f9cd9c4e31c9dea58eba93d37de707d121a3ee69949388096c8b4330b7498b9a4ad
6
+ metadata.gz: 8c724133f39be4c6af72c61d6f26e95bcf4f1a99f6184ac845d55a36d53eaea60fc78273950609f3bbae7fc4faec72005adf9324ab5186d505be58495cb58582
7
+ data.tar.gz: 608978e0555f93ab3e4f7aefb67063df9e0fd8f7b06b28d20ea8f869384ba7ed0e08ba0d071ca81fccd2f269656907413b82fce930c6535aff30f60ef8ad4f95
data/README.md CHANGED
@@ -10,19 +10,20 @@ For more details see <https://schleuder.org/docs/>.
10
10
 
11
11
  Requirements
12
12
  ------------
13
- * ruby >=2.1
14
- * gnupg 2.0.x, or >=2.1.16
13
+ * ruby >=2.5
14
+ * gnupg >=2.2
15
15
  * gpgme
16
16
  * sqlite3
17
17
  * openssl
18
+ * icu
18
19
 
19
- *If you use Debian stretch or CentOS 7, please have a look at the [installation docs](https://schleuder.org/docs/#installation). We do provide packages for those platforms, which simplify the installation a lot.*
20
+ *If you use Debian buster or CentOS 7, please have a look at the [installation docs](https://schleuder.org/schleuder/docs/server-admins.html#installation). We do provide packages for those platforms, which simplify the installation a lot.*
20
21
 
21
22
  *🛈 A note regarding Ubuntu: All Ubuntu versions up to and including 17.10 don't meet the requirements with their packaged versions of gnupg! To run Schleuder on Ubuntu you currently have to install a more recent version of gnupg manually. Only Ubuntu 18.04 ("bionic") provides modern enough versions of Schleuder's requirements.*
22
23
 
23
- On systems that base on Debian 9 ("stretch"), install the dependencies via
24
+ On systems that base on Debian 10 ("buster"), install the dependencies via
24
25
 
25
- apt-get install ruby-dev gnupg2 libgpgme-dev libsqlite3-dev libssl-dev build-essential
26
+ apt-get install ruby-dev gnupg2 libgpgme-dev libsqlite3-dev libssl-dev build-essential libicu-dev
26
27
 
27
28
 
28
29
  We **recommend** to also run a random number generator like [haveged](http://www.issihosts.com/haveged/). This ensures Schleuder won't be blocked by lacking entropy, which otherwise might happen especially during key generation.
@@ -47,15 +48,15 @@ Additionally these **rubygems** are required (will be installed automatically un
47
48
  Installing Schleuder
48
49
  ------------
49
50
 
50
- 1. Download [the gem](https://schleuder.org/download/schleuder-3.5.0.gem) and [the OpenPGP-signature](https://schleuder.org/download/schleuder-3.5.0.gem.sig) and verify:
51
+ 1. Download [the gem](https://schleuder.org/download/schleuder-4.0.0.gem) and [the OpenPGP-signature](https://schleuder.org/download/schleuder-4.0.0.gem.sig) and verify:
51
52
  ```
52
53
  gpg --recv-key 0xB3D190D5235C74E1907EACFE898F2C91E2E6E1F3
53
- gpg --verify schleuder-3.5.0.gem.sig
54
+ gpg --verify schleuder-4.0.0.gem.sig
54
55
  ```
55
56
 
56
57
  2. If all went well install the gem:
57
58
  ```
58
- gem install schleuder-3.5.0.gem
59
+ gem install schleuder-4.0.0.gem
59
60
  ```
60
61
 
61
62
  3. Set up schleuder:
@@ -112,7 +113,7 @@ To execute the test suite run:
112
113
 
113
114
  bundle exec rspec
114
115
 
115
- Please note: Some of the specs use 'pgrep'. On systems that base on Debian 9 ("stretch") install it via
116
+ Please note: Some of the specs use 'pgrep'. On systems that base on Debian 10 ("buster") install it via
116
117
 
117
118
  apt-get install procps
118
119
 
@@ -145,4 +146,4 @@ GNU GPL 3.0. Please see [LICENSE.txt](LICENSE.txt).
145
146
  Alternative Download
146
147
  --------------------
147
148
 
148
- Alternatively to the gem-files you can download the latest release as [a tarball](https://schleuder.org/download/schleuder-3.5.0.tar.gz) and [its OpenPGP-signature](https://schleuder.org/download/schleuder-3.5.0.tar.gz.sig).
149
+ Alternatively to the gem-files you can download the latest release as [a tarball](https://schleuder.org/download/schleuder-4.0.0.tar.gz) and [its OpenPGP-signature](https://schleuder.org/download/schleuder-4.0.0.tar.gz.sig).
data/Rakefile CHANGED
@@ -3,11 +3,11 @@ require_relative "lib/#{project}.rb"
3
3
 
4
4
  @version = Schleuder::VERSION
5
5
  @tagname = "#{project}-#{@version}"
6
- @gpguid = 'team@schleuder.org'
6
+ @gpguid = 'B3D190D5235C74E1907EACFE898F2C91E2E6E1F3'
7
7
  @filename_gem = "#{@tagname}.gem"
8
8
  @filename_tarball = "#{@tagname}.tar.gz"
9
9
 
10
- load "active_record/railties/databases.rake"
10
+ load 'active_record/railties/databases.rake'
11
11
 
12
12
  # Configure ActiveRecord
13
13
  ActiveRecord::Tasks::DatabaseTasks.tap do |config|
@@ -19,7 +19,7 @@ ActiveRecord::Tasks::DatabaseTasks.tap do |config|
19
19
  end
20
20
 
21
21
  # ActiveRecord requires this task to be present
22
- Rake::Task.define_task("db:environment")
22
+ Rake::Task.define_task('db:environment')
23
23
 
24
24
  namespace :db do
25
25
  # A shortcut.
@@ -42,7 +42,7 @@ end
42
42
  task :publish_gem => :website
43
43
  task :git_tag => :check_version
44
44
 
45
- desc "Build new version: git-tag and gem-file"
45
+ desc 'Build new version: git-tag and gem-file'
46
46
  task :new_version => [
47
47
  :check_version,
48
48
  :edit_readme, :edit_changelog,
@@ -57,12 +57,12 @@ task :new_version => [
57
57
  ] do
58
58
  end
59
59
 
60
- desc "Edit CHANGELOG.md"
60
+ desc 'Edit CHANGELOG.md'
61
61
  task :edit_changelog do
62
62
  edit_and_add_file('CHANGELOG')
63
63
  end
64
64
 
65
- desc "Edit README"
65
+ desc 'Edit README'
66
66
  task :edit_readme do
67
67
  edit_and_add_file('README')
68
68
  end
@@ -72,12 +72,12 @@ task :git_tag do
72
72
  `git tag -u #{@gpguid} -s -m "Version #{@version}" #{@tagname}`
73
73
  end
74
74
 
75
- desc "Add changed version to git-index"
75
+ desc 'Add changed version to git-index'
76
76
  task :git_add_version do
77
77
  `git add lib/#{project}/version.rb`
78
78
  end
79
79
 
80
- desc "Commit changes as new version"
80
+ desc 'Commit changes as new version'
81
81
  task :git_commit do
82
82
  `git commit -m "Version #{@version}"`
83
83
  end
@@ -111,10 +111,10 @@ desc 'Publish gem-file to rubygems.org'
111
111
  task :publish_gem do
112
112
  puts "Really push #{@filename_gem} to rubygems.org? [yN]"
113
113
  if $stdin.gets.match(/^y/i)
114
- puts "Pushing..."
114
+ puts 'Pushing...'
115
115
  `gem push #{@filename_gem}`
116
116
  else
117
- puts "Not pushed."
117
+ puts 'Not pushed.'
118
118
  end
119
119
  end
120
120
 
@@ -125,7 +125,7 @@ end
125
125
 
126
126
  desc 'Describe manual release-tasks'
127
127
  task :website do
128
- puts "Please remember to publish the release-notes on the website and on schleuder-announce."
128
+ puts 'Please remember to publish the release-notes on the website and on schleuder-announce.'
129
129
  end
130
130
 
131
131
  desc 'Check if version-tag already exists'
@@ -133,7 +133,7 @@ task :check_version do
133
133
  # Check if Schleuder::VERSION has been updated since last release
134
134
  if `git tag`.match?(/^#{@tagname}$/)
135
135
  $stderr.puts "Warning: Tag '#{@tagname}' already exists. Did you forget to update lib/#{project}/version.rb?"
136
- $stderr.print "Delete tag to continue? [yN] "
136
+ $stderr.print 'Delete tag to continue? [yN] '
137
137
  if $stdin.gets.match(/^y/i)
138
138
  `git tag -d #{@tagname}`
139
139
  else
data/bin/schleuder CHANGED
@@ -4,7 +4,7 @@
4
4
  # error-message.
5
5
  $VERBOSE=nil
6
6
 
7
- trap("INT") { exit 1 }
7
+ trap('INT') { exit 1 }
8
8
 
9
9
 
10
10
  begin
@@ -1,4 +1,4 @@
1
- class CreateLists < ActiveRecord::Migration
1
+ class CreateLists < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if ! table_exists?(:lists)
4
4
  create_table :lists do |t|
@@ -1,4 +1,4 @@
1
- class CreateSubscriptions < ActiveRecord::Migration
1
+ class CreateSubscriptions < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if ! table_exists?(:subscriptions)
4
4
  create_table :subscriptions do |t|
@@ -1,4 +1,4 @@
1
- class AddLanguageToLists < ActiveRecord::Migration
1
+ class AddLanguageToLists < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if ! column_exists?(:lists, :language)
4
4
  add_column :lists, :language, :string, default: 'en'
@@ -1,4 +1,4 @@
1
- class ChangeKeywordsAdminOnlyDefaults < ActiveRecord::Migration
1
+ class ChangeKeywordsAdminOnlyDefaults < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  change_column_default :lists, :keywords_admin_only, "[\"subscribe\", \"unsubscribe\", \"delete-key\"]"
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddForwardAllIncomingToAdmins < ActiveRecord::Migration
1
+ class AddForwardAllIncomingToAdmins < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if ! column_exists?(:lists, :forward_all_incoming_to_admins)
4
4
  add_column :lists, :forward_all_incoming_to_admins, :boolean, default: false
@@ -1,4 +1,4 @@
1
- class ChangeSendEncryptedOnlyDefault < ActiveRecord::Migration
1
+ class ChangeSendEncryptedOnlyDefault < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  change_column_default :lists, :send_encrypted_only, true
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddLogfilesToKeepToLists < ActiveRecord::Migration
1
+ class AddLogfilesToKeepToLists < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if ! column_exists?(:lists, :logfiles_to_keep)
4
4
  add_column :lists, :logfiles_to_keep, :integer, default: 2
@@ -1,4 +1,4 @@
1
- class RenameDeliveryDisabledToDeliveryEnabledAndChangeDefault < ActiveRecord::Migration
1
+ class RenameDeliveryDisabledToDeliveryEnabledAndChangeDefault < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if column_exists?(:subscriptions, :delivery_disabled)
4
4
  rename_column :subscriptions, :delivery_disabled, :delivery_enabled
@@ -1,4 +1,4 @@
1
- class StripGpgPassphrase < ActiveRecord::Migration
1
+ class StripGpgPassphrase < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if column_exists?(:lists, :gpg_passphrase)
4
4
  remove_column :lists, :gpg_passphrase
@@ -1,4 +1,4 @@
1
- class RemoveDefaultMime < ActiveRecord::Migration
1
+ class RemoveDefaultMime < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  remove_column :lists, :default_mime
4
4
  end
@@ -1,4 +1,4 @@
1
- class FixHeadersToMetaDefaults < ActiveRecord::Migration
1
+ class FixHeadersToMetaDefaults < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  change_column_default :lists, :headers_to_meta, '["from", "to", "date", "cc"]'
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddInternalFooterToList < ActiveRecord::Migration
1
+ class AddInternalFooterToList < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if ! column_exists?(:lists, :internal_footer)
4
4
  add_column :lists, :internal_footer, :text, default: ''
@@ -1,4 +1,4 @@
1
- class AddSigEncToHeadersToMetaDefaults < ActiveRecord::Migration
1
+ class AddSigEncToHeadersToMetaDefaults < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  change_column_default :lists, :headers_to_meta, '["from", "to", "cc", "date", "sig", "enc"]'
4
4
  list_klass = create_list_klass
@@ -1,4 +1,4 @@
1
- class AddDeliverSelfsentToList < ActiveRecord::Migration
1
+ class AddDeliverSelfsentToList < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if ! column_exists?(:lists, :deliver_selfsent)
4
4
  add_column :lists, :deliver_selfsent, :boolean, default: true
@@ -1,4 +1,4 @@
1
- class AddAutocryptHeaderToList < ActiveRecord::Migration
1
+ class AddAutocryptHeaderToList < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  if ! column_exists?(:lists, :include_autocrypt_header)
4
4
  add_column :lists, :include_autocrypt_header, :boolean, default: true
@@ -0,0 +1,15 @@
1
+ class AddSetReplyToToSenderAndMungeFrom < ActiveRecord::Migration[4.2]
2
+ def up
3
+ if ! column_exists?(:lists, :set_reply_to_to_sender)
4
+ add_column :lists, :set_reply_to_to_sender, :boolean, default: false
5
+ end
6
+ if ! column_exists?(:lists, :munge_from)
7
+ add_column :lists, :munge_from, :boolean, default: false
8
+ end
9
+ end
10
+
11
+ def down
12
+ remove_column(:lists, :set_reply_to_to_sender)
13
+ remove_column(:lists, :munge_from)
14
+ end
15
+ end
data/db/schema.rb CHANGED
@@ -1,64 +1,64 @@
1
- # encoding: UTF-8
2
1
  # This file is auto-generated from the current state of the database. Instead
3
2
  # of editing this file, please use the migrations feature of Active Record to
4
3
  # incrementally modify your database, and then regenerate this schema definition.
5
4
  #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
5
+ # This file is the source Rails uses to define your schema when running `rails
6
+ # db:schema:load`. When creating a new database, `rails db:schema:load` tends to
7
+ # be faster and is potentially less error prone than running all of your
8
+ # migrations from scratch. Old migrations may fail to apply correctly if those
9
+ # migrations use external dependencies or application code.
11
10
  #
12
11
  # It's strongly recommended that you check this file into your version control system.
13
12
 
14
- ActiveRecord::Schema.define(version: 20190906194820) do
13
+ ActiveRecord::Schema.define(version: 2020_01_18_170110) do
15
14
 
16
15
  create_table "lists", force: :cascade do |t|
17
16
  t.datetime "created_at"
18
17
  t.datetime "updated_at"
19
- t.string "email", limit: 255
20
- t.string "fingerprint", limit: 255
21
- t.string "log_level", limit: 255, default: "warn"
22
- t.string "subject_prefix", limit: 255, default: ""
23
- t.string "subject_prefix_in", limit: 255, default: ""
24
- t.string "subject_prefix_out", limit: 255, default: ""
25
- t.string "openpgp_header_preference", limit: 255, default: "signencrypt"
26
- t.text "public_footer", default: ""
27
- t.text "headers_to_meta", default: "[\"from\", \"to\", \"cc\", \"date\", \"sig\", \"enc\"]"
28
- t.text "bounces_drop_on_headers", default: "{\"x-spam-flag\":\"yes\"}"
29
- t.text "keywords_admin_only", default: "[\"subscribe\", \"unsubscribe\", \"delete-key\"]"
30
- t.text "keywords_admin_notify", default: "[\"add-key\"]"
31
- t.boolean "send_encrypted_only", default: true
32
- t.boolean "receive_encrypted_only", default: false
33
- t.boolean "receive_signed_only", default: false
34
- t.boolean "receive_authenticated_only", default: false
35
- t.boolean "receive_from_subscribed_emailaddresses_only", default: false
36
- t.boolean "receive_admin_only", default: false
37
- t.boolean "keep_msgid", default: true
38
- t.boolean "bounces_drop_all", default: false
39
- t.boolean "bounces_notify_admins", default: true
40
- t.boolean "deliver_selfsent", default: true
41
- t.boolean "include_list_headers", default: true
42
- t.boolean "include_openpgp_header", default: true
43
- t.integer "max_message_size_kb", default: 10240
44
- t.string "language", limit: 255, default: "en"
45
- t.boolean "forward_all_incoming_to_admins", default: false
46
- t.integer "logfiles_to_keep", default: 2
47
- t.text "internal_footer", default: ""
48
- t.boolean "include_autocrypt_header", default: true
18
+ t.string "email", limit: 255
19
+ t.string "fingerprint", limit: 255
20
+ t.string "log_level", limit: 255, default: "warn"
21
+ t.string "subject_prefix", limit: 255, default: ""
22
+ t.string "subject_prefix_in", limit: 255, default: ""
23
+ t.string "subject_prefix_out", limit: 255, default: ""
24
+ t.string "openpgp_header_preference", limit: 255, default: "signencrypt"
25
+ t.text "public_footer", default: ""
26
+ t.text "headers_to_meta", default: "[\"from\", \"to\", \"cc\", \"date\", \"sig\", \"enc\"]"
27
+ t.text "bounces_drop_on_headers", default: "{\"x-spam-flag\":\"yes\"}"
28
+ t.text "keywords_admin_only", default: "[\"subscribe\", \"unsubscribe\", \"delete-key\"]"
29
+ t.text "keywords_admin_notify", default: "[\"add-key\"]"
30
+ t.boolean "send_encrypted_only", default: true
31
+ t.boolean "receive_encrypted_only", default: false
32
+ t.boolean "receive_signed_only", default: false
33
+ t.boolean "receive_authenticated_only", default: false
34
+ t.boolean "receive_from_subscribed_emailaddresses_only", default: false
35
+ t.boolean "receive_admin_only", default: false
36
+ t.boolean "keep_msgid", default: true
37
+ t.boolean "bounces_drop_all", default: false
38
+ t.boolean "bounces_notify_admins", default: true
39
+ t.boolean "include_list_headers", default: true
40
+ t.boolean "include_openpgp_header", default: true
41
+ t.integer "max_message_size_kb", default: 10240
42
+ t.string "language", limit: 255, default: "en"
43
+ t.boolean "forward_all_incoming_to_admins", default: false
44
+ t.integer "logfiles_to_keep", default: 2
45
+ t.text "internal_footer", default: ""
46
+ t.boolean "deliver_selfsent", default: true
47
+ t.boolean "include_autocrypt_header", default: true
48
+ t.boolean "set_reply_to_to_sender", default: false
49
+ t.boolean "munge_from", default: false
49
50
  end
50
51
 
51
52
  create_table "subscriptions", force: :cascade do |t|
52
- t.integer "list_id"
53
- t.string "email", limit: 255
54
- t.string "fingerprint", limit: 255
55
- t.boolean "admin", default: false
56
- t.boolean "delivery_enabled", default: true
53
+ t.integer "list_id"
54
+ t.string "email", limit: 255
55
+ t.string "fingerprint", limit: 255
56
+ t.boolean "admin", default: false
57
+ t.boolean "delivery_enabled", default: true
57
58
  t.datetime "created_at"
58
59
  t.datetime "updated_at"
60
+ t.index ["email", "list_id"], name: "index_subscriptions_on_email_and_list_id", unique: true
61
+ t.index ["list_id"], name: "index_subscriptions_on_list_id"
59
62
  end
60
63
 
61
- add_index "subscriptions", ["email", "list_id"], name: "index_subscriptions_on_email_and_list_id", unique: true
62
- add_index "subscriptions", ["list_id"], name: "index_subscriptions_on_list_id"
63
-
64
64
  end
@@ -131,3 +131,21 @@ forward_all_incoming_to_admins: false
131
131
  # Disabling this only works for signed e-mails; any e-mail that is unsigned
132
132
  # sent to the list is treated as coming from an unknown source
133
133
  deliver_selfsent: true
134
+
135
+ # Set reply-to header to original sender's reply-to?
136
+ # Enabling this will set the reply-to-header of emails sent by schleuder
137
+ # to the original sender's reply-to-header. If the original sender
138
+ # did not supply a reply-to-header, the original from-header will be used.
139
+ # This option can enabled for improved usability since this affect
140
+ # mail client's reply-to button to reply to the original sender instead of
141
+ # the whole list.
142
+ set_reply_to_to_sender: false
143
+
144
+ # Munge from-header?
145
+ # Enabling this option will add the original sender to the from-header.
146
+ # To avoid DMARC issues, we still use the list's address as from-address.
147
+ # However the sender's address will be included as displayed name.
148
+ # For example: "sender@sender.org via list@list.org" <list@list.org>
149
+ # This option can enabled for improved usability since this affect
150
+ # mail client's displayed name.
151
+ munge_from: false
@@ -15,7 +15,7 @@
15
15
  # it is not recommended to use this table for more powerful
16
16
  # configuration options (e.g. transport_maps) because it could give
17
17
  # the schleuder user (which can write the given sqlite database) the
18
- # power to change settings for for other mail handled by this Postfix
18
+ # power to change settings for other mail handled by this Postfix
19
19
  # instance.
20
20
 
21
21
  dbpath = /var/lib/schleuder/db.sqlite
@@ -0,0 +1,9 @@
1
+ [Unit]
2
+ Description=Schleuder weekly key maintenance
3
+ After=local-fs.target network.target
4
+
5
+ [Service]
6
+ Type=oneshot
7
+ ExecStart=/usr/local/bin/schleuder refresh_keys
8
+ ExecStart=/usr/local/bin/schleuder check_keys
9
+ User=schleuder