schleuder 2.2.4 → 3.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +138 -0
- data/Rakefile +136 -0
- data/bin/pinentry-clearpassphrase +72 -0
- data/bin/schleuder +9 -89
- data/bin/schleuder-api-daemon +4 -0
- data/db/migrate/20140501103532_create_lists.rb +39 -0
- data/db/migrate/20140501112859_create_subscriptions.rb +21 -0
- data/db/migrate/201508092100_add_language_to_lists.rb +11 -0
- data/db/migrate/20150812165700_change_keywords_admin_only_defaults.rb +8 -0
- data/db/migrate/20150813235800_add_forward_all_incoming_to_admins.rb +11 -0
- data/db/migrate/201508141727_change_send_encrypted_only_default.rb +8 -0
- data/db/migrate/201508222143_add_logfiles_to_keep_to_lists.rb +11 -0
- data/db/migrate/201508261723_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb +14 -0
- data/db/migrate/201508261815_strip_gpg_passphrase.rb +11 -0
- data/db/migrate/201508261827_remove_default_mime.rb +9 -0
- data/db/migrate/20160501172700_fix_headers_to_meta_defaults.rb +8 -0
- data/db/migrate/20170713215059_add_internal_footer_to_list.rb +11 -0
- data/db/schema.rb +62 -0
- data/etc/init.d/schleuder-api-daemon +87 -0
- data/etc/list-defaults.yml +123 -0
- data/etc/postfix/schleuder_sqlite.cf +28 -0
- data/etc/schleuder-api-daemon.service +10 -0
- data/etc/schleuder.cron.weekly +6 -0
- data/etc/schleuder.yml +61 -0
- data/lib/schleuder-api-daemon.rb +420 -0
- data/lib/schleuder.rb +81 -47
- data/lib/schleuder/cli.rb +334 -0
- data/lib/schleuder/cli/cert.rb +24 -0
- data/lib/schleuder/cli/schleuder_cert_manager.rb +84 -0
- data/lib/schleuder/cli/subcommand_fix.rb +11 -0
- data/lib/schleuder/conf.rb +131 -0
- data/lib/schleuder/errors/active_model_error.rb +15 -0
- data/lib/schleuder/errors/base.rb +17 -0
- data/lib/schleuder/errors/decryption_failed.rb +16 -0
- data/lib/schleuder/errors/fatal_error.rb +13 -0
- data/lib/schleuder/errors/file_not_found.rb +14 -0
- data/lib/schleuder/errors/invalid_listname.rb +13 -0
- data/lib/schleuder/errors/key_adduid_failed.rb +13 -0
- data/lib/schleuder/errors/key_generation_failed.rb +16 -0
- data/lib/schleuder/errors/keyword_admin_only.rb +13 -0
- data/lib/schleuder/errors/list_exists.rb +13 -0
- data/lib/schleuder/errors/list_not_found.rb +14 -0
- data/lib/schleuder/errors/list_property_missing.rb +14 -0
- data/lib/schleuder/errors/listdir_problem.rb +16 -0
- data/lib/schleuder/errors/loading_list_settings_failed.rb +14 -0
- data/lib/schleuder/errors/message_empty.rb +14 -0
- data/lib/schleuder/errors/message_not_from_admin.rb +13 -0
- data/lib/schleuder/errors/message_sender_not_subscribed.rb +13 -0
- data/lib/schleuder/errors/message_too_big.rb +14 -0
- data/lib/schleuder/errors/message_unauthenticated.rb +13 -0
- data/lib/schleuder/errors/message_unencrypted.rb +13 -0
- data/lib/schleuder/errors/message_unsigned.rb +13 -0
- data/lib/schleuder/errors/standard_error.rb +5 -0
- data/lib/schleuder/errors/too_many_keys.rb +17 -0
- data/lib/schleuder/errors/unknown_list_option.rb +14 -0
- data/lib/schleuder/filters/auth_filter.rb +39 -0
- data/lib/schleuder/filters/bounces_filter.rb +12 -0
- data/lib/schleuder/filters/forward_filter.rb +17 -0
- data/lib/schleuder/filters/forward_incoming.rb +13 -0
- data/lib/schleuder/filters/hotmail_message_filter.rb +25 -0
- data/lib/schleuder/filters/max_message_size.rb +14 -0
- data/lib/schleuder/filters/request_filter.rb +26 -0
- data/lib/schleuder/filters/send_key_filter.rb +20 -0
- data/lib/schleuder/filters/strip_alternative_filter.rb +21 -0
- data/lib/schleuder/filters_runner.rb +83 -0
- data/lib/schleuder/gpgme/ctx.rb +274 -0
- data/lib/schleuder/gpgme/import_status.rb +27 -0
- data/lib/schleuder/gpgme/key.rb +212 -0
- data/lib/schleuder/gpgme/sub_key.rb +13 -0
- data/lib/schleuder/gpgme/user_id.rb +22 -0
- data/lib/schleuder/list.rb +318 -127
- data/lib/schleuder/list_builder.rb +139 -0
- data/lib/schleuder/listlogger.rb +31 -0
- data/lib/schleuder/logger.rb +23 -0
- data/lib/schleuder/logger_notifications.rb +69 -0
- data/lib/schleuder/mail/message.rb +482 -0
- data/lib/schleuder/mail/parts_list.rb +9 -0
- data/lib/schleuder/plugin_runners/base.rb +91 -0
- data/lib/schleuder/plugin_runners/list_plugins_runner.rb +24 -0
- data/lib/schleuder/plugin_runners/request_plugins_runner.rb +27 -0
- data/lib/schleuder/plugins/attach_listkey.rb +17 -0
- data/lib/schleuder/plugins/get_version.rb +7 -0
- data/lib/schleuder/plugins/key_management.rb +113 -0
- data/lib/schleuder/plugins/list_management.rb +15 -0
- data/lib/schleuder/plugins/resend.rb +196 -0
- data/lib/schleuder/plugins/sign_this.rb +46 -0
- data/lib/schleuder/plugins/subscription_management.rb +140 -0
- data/lib/schleuder/runner.rb +130 -0
- data/lib/schleuder/subscription.rb +98 -0
- data/lib/schleuder/validators/boolean_validator.rb +7 -0
- data/lib/schleuder/validators/email_validator.rb +7 -0
- data/lib/schleuder/validators/fingerprint_validator.rb +7 -0
- data/lib/schleuder/validators/greater_than_zero_validator.rb +7 -0
- data/lib/schleuder/validators/no_line_breaks_validator.rb +7 -0
- data/lib/schleuder/version.rb +1 -1
- data/locales/de.yml +179 -0
- data/locales/en.yml +179 -0
- metadata +305 -108
- checksums.yaml.gz.sig +0 -3
- data.tar.gz.sig +0 -2
- data/LICENSE +0 -339
- data/README +0 -32
- data/bin/schleuder-fix-gem-dependencies +0 -37
- data/bin/schleuder-init-setup +0 -37
- data/bin/schleuder-migrate-v2.1-to-v2.2 +0 -225
- data/bin/schleuder-newlist +0 -413
- data/contrib/check-expired-keys.rb +0 -60
- data/contrib/mutt-schleuder-colors.rc +0 -10
- data/contrib/mutt-schleuder-resend.vim +0 -24
- data/contrib/smtpserver.rb +0 -76
- data/ext/default-list.conf +0 -149
- data/ext/default-members.conf +0 -7
- data/ext/list.conf.example +0 -14
- data/ext/schleuder.conf +0 -64
- data/lib/schleuder/archiver.rb +0 -46
- data/lib/schleuder/crypt.rb +0 -210
- data/lib/schleuder/errors.rb +0 -5
- data/lib/schleuder/list_config.rb +0 -146
- data/lib/schleuder/log/listlogger.rb +0 -57
- data/lib/schleuder/log/outputter/emailoutputter.rb +0 -120
- data/lib/schleuder/log/outputter/metaemailoutputter.rb +0 -50
- data/lib/schleuder/log/schleuderlogger.rb +0 -34
- data/lib/schleuder/mail.rb +0 -873
- data/lib/schleuder/mailer.rb +0 -26
- data/lib/schleuder/member.rb +0 -69
- data/lib/schleuder/plugin.rb +0 -54
- data/lib/schleuder/processor.rb +0 -363
- data/lib/schleuder/schleuder_config.rb +0 -75
- data/lib/schleuder/storage.rb +0 -84
- data/lib/schleuder/utils.rb +0 -80
- data/man/schleuder-newlist.8 +0 -174
- data/man/schleuder.8 +0 -416
- data/plugins/README +0 -20
- data/plugins/manage_keys_plugin.rb +0 -113
- data/plugins/manage_members_plugin.rb +0 -156
- data/plugins/manage_self_plugin.rb +0 -26
- data/plugins/resend_plugin.rb +0 -35
- data/plugins/sign_this_plugin.rb +0 -14
- data/plugins/version_plugin.rb +0 -12
- metadata.gz.sig +0 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
class CreateLists < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
if ! table_exists?(:lists)
|
4
|
+
create_table :lists do |t|
|
5
|
+
t.timestamps
|
6
|
+
t.string :email
|
7
|
+
t.string :fingerprint
|
8
|
+
t.string :gpg_passphrase
|
9
|
+
t.string :log_level, default: 'warn'
|
10
|
+
t.string :default_mime, default: 'mime'
|
11
|
+
t.string :subject_prefix, default: ''
|
12
|
+
t.string :subject_prefix_in, default: ''
|
13
|
+
t.string :subject_prefix_out, default: ''
|
14
|
+
t.string :openpgp_header_preference, default: 'signencrypt'
|
15
|
+
t.text :public_footer, default: ''
|
16
|
+
t.text :headers_to_meta, default: '["from","to","date",":cc"]'
|
17
|
+
t.text :bounces_drop_on_headers, default: '{"x-spam-flag":"yes"}'
|
18
|
+
t.text :keywords_admin_only, default: '["unsubscribe", "unsubscribe", "delete-key"]'
|
19
|
+
t.text :keywords_admin_notify, default: '["add-key"]'
|
20
|
+
t.boolean :send_encrypted_only, default: false
|
21
|
+
t.boolean :receive_encrypted_only, default: false
|
22
|
+
t.boolean :receive_signed_only, default: false
|
23
|
+
t.boolean :receive_authenticated_only, default: false
|
24
|
+
t.boolean :receive_from_subscribed_emailaddresses_only, default: false
|
25
|
+
t.boolean :receive_admin_only, default: false
|
26
|
+
t.boolean :keep_msgid, default: true
|
27
|
+
t.boolean :bounces_drop_all, default: false
|
28
|
+
t.boolean :bounces_notify_admins, default: true
|
29
|
+
t.boolean :include_list_headers, default: true
|
30
|
+
t.boolean :include_openpgp_header, default: true
|
31
|
+
t.integer :max_message_size_kb, default: 10240
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def down
|
36
|
+
drop_table(:lists)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class CreateSubscriptions < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
if ! table_exists?(:subscriptions)
|
4
|
+
create_table :subscriptions do |t|
|
5
|
+
t.integer :list_id
|
6
|
+
t.string :email
|
7
|
+
t.string :fingerprint
|
8
|
+
t.boolean :admin, default: false
|
9
|
+
t.boolean :delivery_disabled, default: false
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :subscriptions, :list_id
|
14
|
+
add_index :subscriptions, [:email, :list_id], unique: true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def down
|
19
|
+
drop_table(:subscriptions)
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class ChangeKeywordsAdminOnlyDefaults < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
change_column_default :lists, :keywords_admin_only, "[\"subscribe\", \"unsubscribe\", \"delete-key\"]"
|
4
|
+
end
|
5
|
+
def down
|
6
|
+
change_column_default :lists, :keywords_admin_only, "[\"unsubscribe\", \"unsubscribe\", \"delete-key\"]"
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class AddForwardAllIncomingToAdmins < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
if ! column_exists?(:lists, :forward_all_incoming_to_admins)
|
4
|
+
add_column :lists, :forward_all_incoming_to_admins, :boolean, default: false
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def down
|
9
|
+
remove_column(:lists, :forward_all_incoming_to_admins)
|
10
|
+
end
|
11
|
+
end
|
data/db/migrate/201508261723_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class RenameDeliveryDisabledToDeliveryEnabledAndChangeDefault < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
if column_exists?(:subscriptions, :delivery_disabled)
|
4
|
+
rename_column :subscriptions, :delivery_disabled, :delivery_enabled
|
5
|
+
change_column_default :subscriptions, :delivery_enabled, true
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def down
|
10
|
+
rename_column :subscriptions, :delivery_enabled, :delivery_disabled
|
11
|
+
change_column_default :subscriptions, :delivery_disabled, false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
data/db/schema.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# This file is auto-generated from the current state of the database. Instead
|
3
|
+
# of editing this file, please use the migrations feature of Active Record to
|
4
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
5
|
+
#
|
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).
|
11
|
+
#
|
12
|
+
# It's strongly recommended that you check this file into your version control system.
|
13
|
+
|
14
|
+
ActiveRecord::Schema.define(version: 20170713215059) do
|
15
|
+
|
16
|
+
create_table "lists", force: :cascade do |t|
|
17
|
+
t.datetime "created_at"
|
18
|
+
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\", \"date\", \"cc\"]"
|
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 "include_list_headers", default: true
|
41
|
+
t.boolean "include_openpgp_header", default: true
|
42
|
+
t.integer "max_message_size_kb", default: 10240
|
43
|
+
t.string "language", limit: 255, default: "en"
|
44
|
+
t.boolean "forward_all_incoming_to_admins", default: false
|
45
|
+
t.integer "logfiles_to_keep", default: 2
|
46
|
+
t.text "internal_footer", default: ""
|
47
|
+
end
|
48
|
+
|
49
|
+
create_table "subscriptions", force: :cascade do |t|
|
50
|
+
t.integer "list_id"
|
51
|
+
t.string "email", limit: 255
|
52
|
+
t.string "fingerprint", limit: 255
|
53
|
+
t.boolean "admin", default: false
|
54
|
+
t.boolean "delivery_enabled", default: true
|
55
|
+
t.datetime "created_at"
|
56
|
+
t.datetime "updated_at"
|
57
|
+
end
|
58
|
+
|
59
|
+
add_index "subscriptions", ["email", "list_id"], name: "index_subscriptions_on_email_and_list_id", unique: true
|
60
|
+
add_index "subscriptions", ["list_id"], name: "index_subscriptions_on_list_id"
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
### BEGIN INIT INFO
|
4
|
+
# Provides: schleuder-api-daemon
|
5
|
+
# Required-Start: $local_fs $remote_fs $network $syslog
|
6
|
+
# Required-Stop: $local_fs $remote_fs $network $syslog
|
7
|
+
# Default-Start: 2 3 4 5
|
8
|
+
# Default-Stop: 0 1 6
|
9
|
+
# Short-Description: Schleuder API daemon
|
10
|
+
# Description: Schleuder API daemon — provides access for schleuder-cli and schleuder-web
|
11
|
+
### END INIT INFO
|
12
|
+
|
13
|
+
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
14
|
+
|
15
|
+
. /lib/init/vars.sh
|
16
|
+
|
17
|
+
. /lib/lsb/init-functions
|
18
|
+
|
19
|
+
NAME=schleuder-api-daemon
|
20
|
+
DAEMON=/usr/local/bin/schleuder-api-daemon
|
21
|
+
DESC="Schleuder API daemon"
|
22
|
+
PIDFILE=/var/run/$NAME.pid
|
23
|
+
USER=schleuder
|
24
|
+
GROUP=schleuder
|
25
|
+
|
26
|
+
test -x $DAEMON || exit 5
|
27
|
+
|
28
|
+
start_schleuder_api_daemon() {
|
29
|
+
if [ -f "$PIDFILE" ]; then
|
30
|
+
echo ""
|
31
|
+
log_failure_msg "$DESC is running already, please stop it first"
|
32
|
+
exit 1
|
33
|
+
fi
|
34
|
+
|
35
|
+
if ! id $USER >/dev/null 2>&1; then
|
36
|
+
log_failure_msg "User \"$USER\" does not exist"
|
37
|
+
exit 1
|
38
|
+
fi
|
39
|
+
|
40
|
+
if ! getent group $GROUP >/dev/null 2>&1; then
|
41
|
+
log_failure_msg "Group \"$GROUP\" does not exist"
|
42
|
+
exit 1
|
43
|
+
fi
|
44
|
+
|
45
|
+
start-stop-daemon --chuid "$USER":"$GROUP" --start --pidfile $PIDFILE --make-pidfile --background --startas $DAEMON -- $NAME
|
46
|
+
}
|
47
|
+
|
48
|
+
stop_schleuder_api_daemon() {
|
49
|
+
if [ -f "$PIDFILE" ]; then
|
50
|
+
start-stop-daemon --stop --retry TERM/10/KILL/5 --pidfile $PIDFILE --quiet --oknodo --pidfile "$PIDFILE"
|
51
|
+
rm -f $PIDFILE
|
52
|
+
fi
|
53
|
+
}
|
54
|
+
|
55
|
+
status_schleuder_api_daemon() {
|
56
|
+
if [ ! -e $PIDFILE ]; then
|
57
|
+
status_of_proc "${DAEMON}" "${DESC}"
|
58
|
+
else
|
59
|
+
status_of_proc -p "${PIDFILE}" "${DAEMON}" "${DESC}"
|
60
|
+
fi
|
61
|
+
}
|
62
|
+
|
63
|
+
case "$1" in
|
64
|
+
start)
|
65
|
+
log_begin_msg "Starting $DESC"
|
66
|
+
start_schleuder_api_daemon
|
67
|
+
log_end_msg $?
|
68
|
+
;;
|
69
|
+
stop)
|
70
|
+
log_begin_msg "Stopping $DESC"
|
71
|
+
stop_schleuder_api_daemon
|
72
|
+
log_end_msg $?
|
73
|
+
;;
|
74
|
+
status)
|
75
|
+
status_schleuder_api_daemon
|
76
|
+
;;
|
77
|
+
restart|reload|force-reload)
|
78
|
+
log_begin_msg "Restarting $DESC"
|
79
|
+
stop_schleuder_api_daemon
|
80
|
+
start_schleuder_api_daemon
|
81
|
+
log_end_msg $?
|
82
|
+
;;
|
83
|
+
*)
|
84
|
+
echo "Usage: $0 {start|stop|status|restart|reload|force-reload}"
|
85
|
+
exit 1
|
86
|
+
;;
|
87
|
+
esac
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# Setting default values for newly generated lists. Once a list is created it
|
2
|
+
# is not affected by these settings but has its own set of options in the
|
3
|
+
# database.
|
4
|
+
#
|
5
|
+
# The configuration format is yaml (http://www.yaml.org).
|
6
|
+
#
|
7
|
+
# Options are listed with the behaviour encoded in the database schema.
|
8
|
+
|
9
|
+
# Only send out enrypted emails to subscriptions?
|
10
|
+
# (This setting does not affect resend-messages.)
|
11
|
+
send_encrypted_only: true
|
12
|
+
|
13
|
+
# Allow only encrypted emails? If true, any other email will be bounced.
|
14
|
+
receive_encrypted_only: false
|
15
|
+
|
16
|
+
# Allow only emails that are validly signed? If true, any other email will be
|
17
|
+
# bounced.
|
18
|
+
receive_signed_only: false
|
19
|
+
|
20
|
+
# Allow only emails that are validly signed by a subscriber's key? If true,
|
21
|
+
# any other email will be bounced.
|
22
|
+
receive_authenticated_only: false
|
23
|
+
|
24
|
+
# Allow only emails being sent from subscribed addresses? If true, any other
|
25
|
+
# email will be bounced.
|
26
|
+
# NOTE: This is a very weak restriction mechanism on which you should not rely,
|
27
|
+
# as sending addresses can easily be faked! We recommend you to rather
|
28
|
+
# rely on the `receive_authenticated_only` option. Setting the
|
29
|
+
# `receive_authenticated_only` option to true, will authenticated senders
|
30
|
+
# based on the signature on the mail, which is the strongest
|
31
|
+
# authentication mechanism you can get.
|
32
|
+
# This option could be useful, if you would like to have a closed
|
33
|
+
# mailinglist, but could not yet get all subscribers to properly use GPG.
|
34
|
+
receive_from_subscribed_emailaddresses_only: false
|
35
|
+
|
36
|
+
# Allow only emails that are validly signed by a list-admin's key.
|
37
|
+
# This is useful for newsletters, announce or notification lists
|
38
|
+
receive_admin_only: false
|
39
|
+
|
40
|
+
# Which headers to include from the original mail.
|
41
|
+
headers_to_meta:
|
42
|
+
- from
|
43
|
+
- to
|
44
|
+
- cc
|
45
|
+
- date
|
46
|
+
|
47
|
+
# Preserve the Message-IDs (In-Reply-To, References) from the incoming email.
|
48
|
+
# This setting can lead to information leakage, as replies are connectable
|
49
|
+
# and a thread of (encrypted) messages can be built by an eavesdropper.
|
50
|
+
keep_msgid: true
|
51
|
+
|
52
|
+
# Which keywords ("email-commands") should be restricted to list-admins?
|
53
|
+
keywords_admin_only:
|
54
|
+
- subscribe
|
55
|
+
- unsubscribe
|
56
|
+
- delete-key
|
57
|
+
|
58
|
+
# For which keywords should the list-admins receive a notice whenever it
|
59
|
+
# triggers a command.
|
60
|
+
keywords_admin_notify:
|
61
|
+
- add-key
|
62
|
+
|
63
|
+
# Footer to append to each email that is sent to a subscribed address. Will not
|
64
|
+
# be included in messages to non-subscribed addresses.
|
65
|
+
internal_footer:
|
66
|
+
|
67
|
+
# Footer to append to each email that is sent to non-subscribed addresses. Will
|
68
|
+
# not be included in messages to subscribed addresses.
|
69
|
+
public_footer:
|
70
|
+
|
71
|
+
# Prefix to be inserted into the subject of every email that is validly signed
|
72
|
+
# by a subscribed address.
|
73
|
+
subject_prefix:
|
74
|
+
|
75
|
+
# Prefix to be inserted into the subject of every email that is *not* validly
|
76
|
+
# signed by a subscribed address.
|
77
|
+
subject_prefix_in:
|
78
|
+
|
79
|
+
# Prefix to be inserted into the subject of every email that has been
|
80
|
+
# resent to a non-subscribed address.
|
81
|
+
subject_prefix_out:
|
82
|
+
|
83
|
+
# Drop any bounces (incoming emails not passing the receive_*_only-rules)?
|
84
|
+
bounces_drop_all: false
|
85
|
+
|
86
|
+
# Drop bounces if they match one of these headers. Must be a hash, keys
|
87
|
+
# and values are case insensitive.
|
88
|
+
bounces_drop_on_headers:
|
89
|
+
x-spam-flag: yes
|
90
|
+
|
91
|
+
# Send a notice to the list-admins whenever an email is bounced or dropped?
|
92
|
+
bounces_notify_admins: true
|
93
|
+
|
94
|
+
# Include RFC-compliant List-* Headers into emails?
|
95
|
+
include_list_headers: true
|
96
|
+
|
97
|
+
# Include OpenPGP-Header into emails?
|
98
|
+
include_openpgp_header: true
|
99
|
+
|
100
|
+
# Prefered way to receive emails to note in OpenPGP-Header
|
101
|
+
# ('sign'|'encrypt'|'signencrypt'|'unprotected'|'none')
|
102
|
+
openpgp_header_preference: signencrypt
|
103
|
+
|
104
|
+
# Maximum size of emails allowed on the list, in kilobyte. All others will be
|
105
|
+
# bounced.
|
106
|
+
max_message_size_kb: 10240
|
107
|
+
|
108
|
+
# How verbose to log on the list-level (Notifications will be sent to
|
109
|
+
# list-admins)? Error, warn, info, or debug.
|
110
|
+
log_level: warn
|
111
|
+
|
112
|
+
# How many logfiles to keep, including the current one.
|
113
|
+
# Logfiles are rotated daily, so 2 means: delete logfiles older than
|
114
|
+
# yesterday. Values lower than 1 are ignored.
|
115
|
+
logfiles_to_keep: 2
|
116
|
+
|
117
|
+
# Which language to use for automated replies, error-messages, etc.
|
118
|
+
# Available: en, de.
|
119
|
+
language: en
|
120
|
+
|
121
|
+
# Forward a raw copy of all incoming emails to the list-admins?
|
122
|
+
# Mainly useful for debugging.
|
123
|
+
forward_all_incoming_to_admins: false
|