schleuder 3.5.3 → 4.0.2

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