schleuder 3.5.3 → 4.0.2

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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -21
  3. data/Rakefile +15 -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 +13 -12
  30. data/lib/schleuder/cli.rb +9 -189
  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 +4 -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 -67
  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/logger.rb +2 -6
  72. data/lib/schleuder/mail/{encrypted_part.rb → gpg/encrypted_part.rb} +0 -0
  73. data/lib/schleuder/mail/gpg/sign_part.rb +33 -0
  74. data/lib/schleuder/mail/message.rb +135 -40
  75. data/lib/schleuder/runner.rb +18 -16
  76. data/lib/schleuder/subscription.rb +35 -13
  77. data/lib/schleuder/validators/boolean_validator.rb +1 -1
  78. data/lib/schleuder/validators/email_validator.rb +1 -1
  79. data/lib/schleuder/validators/fingerprint_validator.rb +1 -1
  80. data/lib/schleuder/validators/greater_than_zero_validator.rb +1 -1
  81. data/lib/schleuder/validators/no_line_breaks_validator.rb +1 -1
  82. data/lib/schleuder/version.rb +1 -1
  83. data/locales/de.yml +49 -36
  84. data/locales/en.yml +34 -21
  85. metadata +131 -79
  86. data/bin/pinentry-clearpassphrase +0 -72
  87. data/lib/schleuder/plugin_runners/base.rb +0 -91
  88. data/lib/schleuder/plugin_runners/list_plugins_runner.rb +0 -24
  89. data/lib/schleuder/plugin_runners/request_plugins_runner.rb +0 -27
  90. data/lib/schleuder/plugins/attach_listkey.rb +0 -13
  91. data/lib/schleuder/plugins/get_version.rb +0 -7
  92. data/lib/schleuder/plugins/key_management.rb +0 -121
  93. data/lib/schleuder/plugins/list_management.rb +0 -15
  94. data/lib/schleuder/plugins/resend.rb +0 -199
  95. data/lib/schleuder/plugins/sign_this.rb +0 -46
  96. data/lib/schleuder/plugins/subscription_management.rb +0 -207
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8aff8f8ecff4958e630158f6fc5811db96d26699ab0946d16b4fc430e2897387
4
- data.tar.gz: daa4d6fbe4941a311dcfc54d5544b1771d809ca2f570f6060473b0f94f4bc577
3
+ metadata.gz: 9f8275838177195ab78283d9c737de9cbd2d39e816c9f41db2e31d785d787dd8
4
+ data.tar.gz: 464e220965c5d0ee43d300a1f988e7a27edd9344d751bae9e06a9a02fc5c2a43
5
5
  SHA512:
6
- metadata.gz: b125a6734601100a1a768b9295848c4d3c1de0fb8336e7a6cf070972c78913f71c2ff52418a8a16cff705a546ca27de29155cae0c1f30736f4f8127bffe5b823
7
- data.tar.gz: 55bd88009950e4dbc52a3f17f3566ee8f4bd7d43751237f19da514d00e8e3d2dc92817c15660b0d826bb8072cb537f3652cf5e93ebeca43fcc424faf33964978
6
+ metadata.gz: d6ba6aab5c19ae0f8f74a0fe44e84e5a10f4adf434f55454a1d7ca49943557fbad5db23ff06fee1a3e0efa5a248034f8a6a17dcbeb91864bf04ec68f8cd14d1f
7
+ data.tar.gz: bd361a32b63c6bcfa146e1369a45fa54e9c3c94d29baaefbbff01a1629b468c896a34c17cd6ff957357eaf67611a5b09b5c2b2d9a023130430a86f29892b19cb
data/README.md CHANGED
@@ -1,36 +1,25 @@
1
- Schleuder, version 3
1
+ Schleuder
2
2
  ======================================
3
3
 
4
4
  Schleuder is a gpg-enabled mailing list manager with resending-capabilities. Subscribers can communicate encrypted (and pseudonymously) among themselves, receive emails from non-subscribers and send emails to non-subscribers via the list.
5
5
 
6
- Version 3 of schleuder is a complete rewrite, which aims to be more robust, flexible, and internationalized. It
7
- also provides an API for the optional web interface called [schleuder-web](https://0xacab.org/schleuder/schleuder-web).
6
+ It aims to be robust, flexible, internationalized and also provides an API for the optional web interface called [schleuder-web](https://0xacab.org/schleuder/schleuder-web).
8
7
 
9
8
  For more details see <https://schleuder.org/docs/>.
10
9
 
11
10
  Requirements
12
11
  ------------
13
- * ruby >=2.1
14
- * gnupg 2.0.x, or >=2.1.16
12
+ * ruby >=2.5
13
+ * gnupg >=2.2
15
14
  * gpgme
16
15
  * sqlite3
17
16
  * openssl
17
+ * icu
18
18
 
19
- *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
- *🛈 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
- On systems that base on Debian 10 ("buster"), install the dependencies via
24
-
25
- apt-get install ruby-dev gnupg2 libgpgme-dev libsqlite3-dev libssl-dev build-essential
26
-
19
+ *If you use Debian buster, CentOS 7 or Archlinux, 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.*
27
20
 
28
21
  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.
29
22
 
30
- On Debian based systems, install it via
31
-
32
- apt-get install haveged
33
-
34
23
 
35
24
  Additionally these **rubygems** are required (will be installed automatically unless present):
36
25
 
@@ -47,15 +36,15 @@ Additionally these **rubygems** are required (will be installed automatically un
47
36
  Installing Schleuder
48
37
  ------------
49
38
 
50
- 1. Download [the gem](https://schleuder.org/download/schleuder-3.5.3.gem) and [the OpenPGP-signature](https://schleuder.org/download/schleuder-3.5.3.gem.sig) and verify:
39
+ 1. Download [the gem](https://schleuder.org/download/schleuder-4.0.2.gem) and [the OpenPGP-signature](https://schleuder.org/download/schleuder-4.0.2.gem.sig) and verify:
51
40
  ```
52
41
  gpg --recv-key 0xB3D190D5235C74E1907EACFE898F2C91E2E6E1F3
53
- gpg --verify schleuder-3.5.3.gem.sig
42
+ gpg --verify schleuder-4.0.2.gem.sig
54
43
  ```
55
44
 
56
45
  2. If all went well install the gem:
57
46
  ```
58
- gem install schleuder-3.5.3.gem
47
+ gem install schleuder-4.0.2.gem
59
48
  ```
60
49
 
61
50
  3. Set up schleuder:
@@ -145,4 +134,4 @@ GNU GPL 3.0. Please see [LICENSE.txt](LICENSE.txt).
145
134
  Alternative Download
146
135
  --------------------
147
136
 
148
- Alternatively to the gem-files you can download the latest release as [a tarball](https://schleuder.org/download/schleuder-3.5.3.tar.gz) and [its OpenPGP-signature](https://schleuder.org/download/schleuder-3.5.3.tar.gz.sig).
137
+ Alternatively to the gem-files you can download the latest release as [a tarball](https://schleuder.org/download/schleuder-4.0.2.tar.gz) and [its OpenPGP-signature](https://schleuder.org/download/schleuder-4.0.2.tar.gz.sig).
data/Rakefile CHANGED
@@ -7,7 +7,10 @@ require_relative "lib/#{project}.rb"
7
7
  @filename_gem = "#{@tagname}.gem"
8
8
  @filename_tarball = "#{@tagname}.tar.gz"
9
9
 
10
- load "active_record/railties/databases.rake"
10
+ # Make ActiveRecord's tasks usable for us (without this, those tasks try to run
11
+ # in the "default_env" environment, which is not configured).
12
+ ENV['RACK_ENV'] ||= ENV['SCHLEUDER_ENV']
13
+ load 'active_record/railties/databases.rake'
11
14
 
12
15
  # Configure ActiveRecord
13
16
  ActiveRecord::Tasks::DatabaseTasks.tap do |config|
@@ -19,7 +22,7 @@ ActiveRecord::Tasks::DatabaseTasks.tap do |config|
19
22
  end
20
23
 
21
24
  # ActiveRecord requires this task to be present
22
- Rake::Task.define_task("db:environment")
25
+ Rake::Task.define_task('db:environment')
23
26
 
24
27
  namespace :db do
25
28
  # A shortcut.
@@ -42,7 +45,7 @@ end
42
45
  task :publish_gem => :website
43
46
  task :git_tag => :check_version
44
47
 
45
- desc "Build new version: git-tag and gem-file"
48
+ desc 'Build new version: git-tag and gem-file'
46
49
  task :new_version => [
47
50
  :check_version,
48
51
  :edit_readme, :edit_changelog,
@@ -57,12 +60,12 @@ task :new_version => [
57
60
  ] do
58
61
  end
59
62
 
60
- desc "Edit CHANGELOG.md"
63
+ desc 'Edit CHANGELOG.md'
61
64
  task :edit_changelog do
62
65
  edit_and_add_file('CHANGELOG')
63
66
  end
64
67
 
65
- desc "Edit README"
68
+ desc 'Edit README'
66
69
  task :edit_readme do
67
70
  edit_and_add_file('README')
68
71
  end
@@ -72,12 +75,12 @@ task :git_tag do
72
75
  `git tag -u #{@gpguid} -s -m "Version #{@version}" #{@tagname}`
73
76
  end
74
77
 
75
- desc "Add changed version to git-index"
78
+ desc 'Add changed version to git-index'
76
79
  task :git_add_version do
77
80
  `git add lib/#{project}/version.rb`
78
81
  end
79
82
 
80
- desc "Commit changes as new version"
83
+ desc 'Commit changes as new version'
81
84
  task :git_commit do
82
85
  `git commit -m "Version #{@version}"`
83
86
  end
@@ -111,21 +114,21 @@ desc 'Publish gem-file to rubygems.org'
111
114
  task :publish_gem do
112
115
  puts "Really push #{@filename_gem} to rubygems.org? [yN]"
113
116
  if $stdin.gets.match(/^y/i)
114
- puts "Pushing..."
117
+ puts 'Pushing...'
115
118
  `gem push #{@filename_gem}`
116
119
  else
117
- puts "Not pushed."
120
+ puts 'Not pushed.'
118
121
  end
119
122
  end
120
123
 
121
124
  desc 'Build and sign a tarball'
122
125
  task :build_tarball do
123
- `git archive --format tar.gz --prefix "#{@tagname}/" -o #{@filename_tarball} master`
126
+ `git archive --format tar.gz --prefix "#{@tagname}/" -o #{@filename_tarball} main`
124
127
  end
125
128
 
126
129
  desc 'Describe manual release-tasks'
127
130
  task :website do
128
- puts "Please remember to publish the release-notes on the website and on schleuder-announce."
131
+ puts 'Please remember to publish the release-notes on the website and on schleuder-announce.'
129
132
  end
130
133
 
131
134
  desc 'Check if version-tag already exists'
@@ -133,7 +136,7 @@ task :check_version do
133
136
  # Check if Schleuder::VERSION has been updated since last release
134
137
  if `git tag`.match?(/^#{@tagname}$/)
135
138
  $stderr.puts "Warning: Tag '#{@tagname}' already exists. Did you forget to update lib/#{project}/version.rb?"
136
- $stderr.print "Delete tag to continue? [yN] "
139
+ $stderr.print 'Delete tag to continue? [yN] '
137
140
  if $stdin.gets.match(/^y/i)
138
141
  `git tag -d #{@tagname}`
139
142
  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 `bin/rails
6
+ # db:schema:load`. When creating a new database, `bin/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"
19
+ t.string "fingerprint"
20
+ t.string "log_level", default: "warn"
21
+ t.string "subject_prefix", default: ""
22
+ t.string "subject_prefix_in", default: ""
23
+ t.string "subject_prefix_out", default: ""
24
+ t.string "openpgp_header_preference", 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", 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"
55
+ t.string "fingerprint"
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