schleuder 2.2.4 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +138 -0
  3. data/Rakefile +136 -0
  4. data/bin/pinentry-clearpassphrase +72 -0
  5. data/bin/schleuder +9 -89
  6. data/bin/schleuder-api-daemon +4 -0
  7. data/db/migrate/20140501103532_create_lists.rb +39 -0
  8. data/db/migrate/20140501112859_create_subscriptions.rb +21 -0
  9. data/db/migrate/201508092100_add_language_to_lists.rb +11 -0
  10. data/db/migrate/20150812165700_change_keywords_admin_only_defaults.rb +8 -0
  11. data/db/migrate/20150813235800_add_forward_all_incoming_to_admins.rb +11 -0
  12. data/db/migrate/201508141727_change_send_encrypted_only_default.rb +8 -0
  13. data/db/migrate/201508222143_add_logfiles_to_keep_to_lists.rb +11 -0
  14. data/db/migrate/201508261723_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb +14 -0
  15. data/db/migrate/201508261815_strip_gpg_passphrase.rb +11 -0
  16. data/db/migrate/201508261827_remove_default_mime.rb +9 -0
  17. data/db/migrate/20160501172700_fix_headers_to_meta_defaults.rb +8 -0
  18. data/db/migrate/20170713215059_add_internal_footer_to_list.rb +11 -0
  19. data/db/schema.rb +62 -0
  20. data/etc/init.d/schleuder-api-daemon +87 -0
  21. data/etc/list-defaults.yml +123 -0
  22. data/etc/postfix/schleuder_sqlite.cf +28 -0
  23. data/etc/schleuder-api-daemon.service +10 -0
  24. data/etc/schleuder.cron.weekly +6 -0
  25. data/etc/schleuder.yml +61 -0
  26. data/lib/schleuder-api-daemon.rb +420 -0
  27. data/lib/schleuder.rb +81 -47
  28. data/lib/schleuder/cli.rb +334 -0
  29. data/lib/schleuder/cli/cert.rb +24 -0
  30. data/lib/schleuder/cli/schleuder_cert_manager.rb +84 -0
  31. data/lib/schleuder/cli/subcommand_fix.rb +11 -0
  32. data/lib/schleuder/conf.rb +131 -0
  33. data/lib/schleuder/errors/active_model_error.rb +15 -0
  34. data/lib/schleuder/errors/base.rb +17 -0
  35. data/lib/schleuder/errors/decryption_failed.rb +16 -0
  36. data/lib/schleuder/errors/fatal_error.rb +13 -0
  37. data/lib/schleuder/errors/file_not_found.rb +14 -0
  38. data/lib/schleuder/errors/invalid_listname.rb +13 -0
  39. data/lib/schleuder/errors/key_adduid_failed.rb +13 -0
  40. data/lib/schleuder/errors/key_generation_failed.rb +16 -0
  41. data/lib/schleuder/errors/keyword_admin_only.rb +13 -0
  42. data/lib/schleuder/errors/list_exists.rb +13 -0
  43. data/lib/schleuder/errors/list_not_found.rb +14 -0
  44. data/lib/schleuder/errors/list_property_missing.rb +14 -0
  45. data/lib/schleuder/errors/listdir_problem.rb +16 -0
  46. data/lib/schleuder/errors/loading_list_settings_failed.rb +14 -0
  47. data/lib/schleuder/errors/message_empty.rb +14 -0
  48. data/lib/schleuder/errors/message_not_from_admin.rb +13 -0
  49. data/lib/schleuder/errors/message_sender_not_subscribed.rb +13 -0
  50. data/lib/schleuder/errors/message_too_big.rb +14 -0
  51. data/lib/schleuder/errors/message_unauthenticated.rb +13 -0
  52. data/lib/schleuder/errors/message_unencrypted.rb +13 -0
  53. data/lib/schleuder/errors/message_unsigned.rb +13 -0
  54. data/lib/schleuder/errors/standard_error.rb +5 -0
  55. data/lib/schleuder/errors/too_many_keys.rb +17 -0
  56. data/lib/schleuder/errors/unknown_list_option.rb +14 -0
  57. data/lib/schleuder/filters/auth_filter.rb +39 -0
  58. data/lib/schleuder/filters/bounces_filter.rb +12 -0
  59. data/lib/schleuder/filters/forward_filter.rb +17 -0
  60. data/lib/schleuder/filters/forward_incoming.rb +13 -0
  61. data/lib/schleuder/filters/hotmail_message_filter.rb +25 -0
  62. data/lib/schleuder/filters/max_message_size.rb +14 -0
  63. data/lib/schleuder/filters/request_filter.rb +26 -0
  64. data/lib/schleuder/filters/send_key_filter.rb +20 -0
  65. data/lib/schleuder/filters/strip_alternative_filter.rb +21 -0
  66. data/lib/schleuder/filters_runner.rb +83 -0
  67. data/lib/schleuder/gpgme/ctx.rb +274 -0
  68. data/lib/schleuder/gpgme/import_status.rb +27 -0
  69. data/lib/schleuder/gpgme/key.rb +212 -0
  70. data/lib/schleuder/gpgme/sub_key.rb +13 -0
  71. data/lib/schleuder/gpgme/user_id.rb +22 -0
  72. data/lib/schleuder/list.rb +318 -127
  73. data/lib/schleuder/list_builder.rb +139 -0
  74. data/lib/schleuder/listlogger.rb +31 -0
  75. data/lib/schleuder/logger.rb +23 -0
  76. data/lib/schleuder/logger_notifications.rb +69 -0
  77. data/lib/schleuder/mail/message.rb +482 -0
  78. data/lib/schleuder/mail/parts_list.rb +9 -0
  79. data/lib/schleuder/plugin_runners/base.rb +91 -0
  80. data/lib/schleuder/plugin_runners/list_plugins_runner.rb +24 -0
  81. data/lib/schleuder/plugin_runners/request_plugins_runner.rb +27 -0
  82. data/lib/schleuder/plugins/attach_listkey.rb +17 -0
  83. data/lib/schleuder/plugins/get_version.rb +7 -0
  84. data/lib/schleuder/plugins/key_management.rb +113 -0
  85. data/lib/schleuder/plugins/list_management.rb +15 -0
  86. data/lib/schleuder/plugins/resend.rb +196 -0
  87. data/lib/schleuder/plugins/sign_this.rb +46 -0
  88. data/lib/schleuder/plugins/subscription_management.rb +140 -0
  89. data/lib/schleuder/runner.rb +130 -0
  90. data/lib/schleuder/subscription.rb +98 -0
  91. data/lib/schleuder/validators/boolean_validator.rb +7 -0
  92. data/lib/schleuder/validators/email_validator.rb +7 -0
  93. data/lib/schleuder/validators/fingerprint_validator.rb +7 -0
  94. data/lib/schleuder/validators/greater_than_zero_validator.rb +7 -0
  95. data/lib/schleuder/validators/no_line_breaks_validator.rb +7 -0
  96. data/lib/schleuder/version.rb +1 -1
  97. data/locales/de.yml +179 -0
  98. data/locales/en.yml +179 -0
  99. metadata +305 -108
  100. checksums.yaml.gz.sig +0 -3
  101. data.tar.gz.sig +0 -2
  102. data/LICENSE +0 -339
  103. data/README +0 -32
  104. data/bin/schleuder-fix-gem-dependencies +0 -37
  105. data/bin/schleuder-init-setup +0 -37
  106. data/bin/schleuder-migrate-v2.1-to-v2.2 +0 -225
  107. data/bin/schleuder-newlist +0 -413
  108. data/contrib/check-expired-keys.rb +0 -60
  109. data/contrib/mutt-schleuder-colors.rc +0 -10
  110. data/contrib/mutt-schleuder-resend.vim +0 -24
  111. data/contrib/smtpserver.rb +0 -76
  112. data/ext/default-list.conf +0 -149
  113. data/ext/default-members.conf +0 -7
  114. data/ext/list.conf.example +0 -14
  115. data/ext/schleuder.conf +0 -64
  116. data/lib/schleuder/archiver.rb +0 -46
  117. data/lib/schleuder/crypt.rb +0 -210
  118. data/lib/schleuder/errors.rb +0 -5
  119. data/lib/schleuder/list_config.rb +0 -146
  120. data/lib/schleuder/log/listlogger.rb +0 -57
  121. data/lib/schleuder/log/outputter/emailoutputter.rb +0 -120
  122. data/lib/schleuder/log/outputter/metaemailoutputter.rb +0 -50
  123. data/lib/schleuder/log/schleuderlogger.rb +0 -34
  124. data/lib/schleuder/mail.rb +0 -873
  125. data/lib/schleuder/mailer.rb +0 -26
  126. data/lib/schleuder/member.rb +0 -69
  127. data/lib/schleuder/plugin.rb +0 -54
  128. data/lib/schleuder/processor.rb +0 -363
  129. data/lib/schleuder/schleuder_config.rb +0 -75
  130. data/lib/schleuder/storage.rb +0 -84
  131. data/lib/schleuder/utils.rb +0 -80
  132. data/man/schleuder-newlist.8 +0 -174
  133. data/man/schleuder.8 +0 -416
  134. data/plugins/README +0 -20
  135. data/plugins/manage_keys_plugin.rb +0 -113
  136. data/plugins/manage_members_plugin.rb +0 -156
  137. data/plugins/manage_self_plugin.rb +0 -26
  138. data/plugins/resend_plugin.rb +0 -35
  139. data/plugins/sign_this_plugin.rb +0 -14
  140. data/plugins/version_plugin.rb +0 -12
  141. metadata.gz.sig +0 -0
@@ -1,75 +0,0 @@
1
- # the schleuder config class - a simple container
2
- module Schleuder
3
- # Provides schleuder.conf as object, contains default values for most settings
4
- class SchleuderConfig < Storage
5
-
6
- # Options and their defaults
7
- # If you want to change them edit the global config file.
8
- # Usually in /etc/schleuder/schleuder.conf
9
-
10
- # Outgoing SMTP server address
11
- schleuder_attr :smtp_host, 'localhost'
12
-
13
- # Outgoing SMTP server port
14
- schleuder_attr :smtp_port, 25
15
-
16
- # Used as sender-address ans for determining the own gpg-key
17
- schleuder_attr :myaddr, 'schleuder@localhost'
18
-
19
- # The address to which SchleuderLogger#fatal messages (and possibly also
20
- # SchleuderLogger#error messages) are reported
21
- schleuder_attr :superadminaddr, 'root@localhost'
22
-
23
- # Location of the global log-file.
24
- schleuder_attr :log_file, '/var/log/schleuder/schleuder.log'
25
-
26
- # Global log_level: (ERROR || WARN || INFO || DEBUG)
27
- schleuder_attr :log_level, 'ERROR'
28
-
29
- # Directory which holds plugin-files
30
- schleuder_attr :plugins_dir, File.join(File.expand_path(File.dirname(__FILE__) + '/../..'),'plugins')
31
-
32
- # Directory which holds one subdirectory for each list
33
- schleuder_attr :lists_dir, '/var/schleuderlists'
34
-
35
- # Name of the list-specific file that holds the list configuration (YAML-formatted)
36
- schleuder_attr :lists_configfile, 'list.conf'
37
-
38
- # Name of the file that holds the members (YAML-formatted)
39
- schleuder_attr :lists_memberfile, 'members.conf'
40
-
41
- # Name of the file that holds default settings for all lists (YAML-formatted)
42
- schleuder_attr :lists_default_conf do
43
- File.join(@conf_dir,'default-list.conf')
44
- end
45
-
46
- # GPG-Key type.
47
- schleuder_attr :gpg_key_type, 'RSA'
48
-
49
- # GPG-Key length.
50
- schleuder_attr :gpg_key_length, 4096
51
-
52
- # GPG-Sub-Key type.
53
- schleuder_attr :gpg_subkey_type, 'RSA'
54
-
55
- # GPG-Sub-Key length.
56
- schleuder_attr :gpg_subkey_length, 4096
57
-
58
- ### END OF CONFIG OPTIONS
59
-
60
- def initialize(config=nil)
61
- if config && config.is_a?(String)
62
- @conf_dir = File.dirname(config)
63
- elsif config.nil?
64
- @conf_dir = '/etc/schleuder'
65
- config = File.join(@conf_dir,'schleuder.conf')
66
- end
67
-
68
- # overload with config
69
- super(config)
70
-
71
- # turn @plugins_dir into an array if needed
72
- @plugins_dir = [@plugins_dir] unless @plugins_dir.class == Array
73
- end
74
- end
75
- end
@@ -1,84 +0,0 @@
1
- require 'yaml'
2
-
3
- module Schleuder
4
- # Abstract class to provide loading of files and overloading of values.
5
- # Note: don't use Schleuder.log in here, is might be not yet available, and
6
- # you will produce loops.
7
- class Storage
8
-
9
- class << self
10
- def schleuder_attr(attr_name, default_value=nil,&block)
11
- attr_name = attr_name.to_s unless attr_name.is_a?(String)
12
- default_schleuder_attributes[attr_name] = block_given? ? block : Proc.new{ default_value }
13
-
14
- class_eval <<-EOE
15
- def #{attr_name}
16
- if schleuder_attributes['#{attr_name}'].nil?
17
- schleuder_attributes['#{attr_name}'] = self.instance_eval(&self.class.default_schleuder_attributes['#{attr_name}'])
18
- end
19
- schleuder_attributes['#{attr_name}']
20
- end
21
- def #{attr_name}=(value)
22
- schleuder_attributes['#{attr_name}'] = value
23
- end
24
- EOE
25
- end
26
-
27
- def default_schleuder_attributes
28
- @default_schleuder_attributes ||= {}
29
- end
30
- end
31
-
32
- def schleuder_attributes
33
- @schleuder_attributes ||= {}
34
- end
35
-
36
- # If +input+ is String, we read the file at the given path.
37
- # If +input+ is Hash, it will be used to fill instance variables.
38
- def initialize(input=nil)
39
- if input.kind_of?(Hash)
40
- overload_from_hash!(input)
41
- elsif input.kind_of?(String)
42
- overload_from_file!(input)
43
- elsif !input.nil?
44
- raise "Unknown input: #{input.class}"
45
- end
46
- end
47
-
48
- def to_hash
49
- self.class.default_schleuder_attributes.keys.inject({}) do |res, key|
50
- val = send(key)
51
- res[key] = if val.is_a?(Array)
52
- val.collect { |e| e.respond_to?(:to_hash) ? e.to_hash : e }
53
- elsif val.respond_to?(:to_hash)
54
- val.to_hash
55
- else
56
- val
57
- end
58
- res
59
- end
60
- end
61
-
62
- private
63
-
64
- # Load content from +filename+ and overwrite existing instance variables of
65
- # self
66
- def overload_from_file!(filename)
67
- h = YAML.load_file(filename) || Hash.new # yaml returns nil if the Hash is empty
68
- overload_from_hash!(h)
69
- end
70
-
71
- # Load content from +h+ into self (if allowed so according to
72
- # attr_reader/writer/accessor)
73
- def overload_from_hash!(h)
74
- h.each_pair do |k,v|
75
- k = k.to_s unless k.is_a?(String)
76
- if self.class.default_schleuder_attributes.keys.include?(k)
77
- schleuder_attributes[k] = v
78
- else
79
- Schleuder.log.warn "Attempt to set illegal attribute: #{k} => #{v}"
80
- end
81
- end
82
- end
83
- end
84
- end
@@ -1,80 +0,0 @@
1
- module Schleuder
2
-
3
- class Utils
4
- def self.random_password(size = 32)
5
- chars = (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a) + "+*%/()=?![]{}-_.,;:<>".split(//)
6
- Utils.generate_random_str(size,chars)
7
- end
8
- def self.generate_random_str(size=32,chars = nil)
9
- chars = (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a) if chars.nil?
10
- (1..size).collect{|a| chars[rand(chars.size)] }.join.to_s
11
- end
12
-
13
- def self.verify_addr(name, address)
14
- unless Utils.emailaddress?(address)
15
- raise "Invalid #{name}: #{address}"
16
- end
17
- end
18
-
19
- def self.emailaddress?(address)
20
- begin
21
- address == TMail::Address.parse(address).address
22
- rescue TMail::SyntaxError, TypeError => e
23
- false
24
- end
25
- end
26
-
27
- def self.get_pretty_fingerprint(key)
28
- "Wrong input, need GPGME::Key!" unless key.kind_of?(GPGME::Key)
29
- key.subkeys.first.fingerprint.gsub(/(.{4})/, "\\1 ").strip
30
- end
31
-
32
- def self.generate_message_id(listid='')
33
- listid = listid + '-' unless listid.empty?
34
- '<'+Utils.generate_random_str+"@#{listid}schleuder>"
35
- end
36
-
37
- def self.schleuder_id?(message_id,listid='')
38
- return false unless message_id
39
- listid = listid + '-' unless listid.empty?
40
- /<\w*@#{Regexp.quote(listid)}schleuder>/ === message_id
41
- end
42
-
43
- def self.compress_fingerprint(fpr)
44
- fpr =~ / / ? fpr.gsub(/ /,'') : fpr
45
- end
46
- end
47
- end
48
-
49
- class Symbol
50
- include Comparable
51
-
52
- def <=>(other)
53
- self.to_s <=> other.to_s
54
- end
55
- end
56
-
57
- class Hash
58
- # Replacing the to_yaml function so it'll serialize hashes sorted (by their keys)
59
- #
60
- # Original function is in /usr/lib/ruby/1.8/yaml/rubytypes.rb
61
- def to_yaml( opts = {} )
62
- YAML::quick_emit( object_id, opts ) do |out|
63
- out.map( taguri, to_yaml_style ) do |map|
64
- sort.each do |k, v| # <-- here's my addition (the 'sort')
65
- map.add( k, v )
66
- end
67
- end
68
- end
69
- end
70
- end
71
-
72
- class String
73
- def fmt(linewidth=nil)
74
- if linewidth.nil?
75
- require 'highline/system_extensions'
76
- linewidth = HighLine::SystemExtensions.terminal_size.first || 76
77
- end
78
- gsub(/(.{1,#{linewidth}})(\s+|$)/, "\\1\n")
79
- end
80
- end
@@ -1,174 +0,0 @@
1
- .\" generated with Ronn/v0.7.3
2
- .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
- .
4
- .TH "SCHLEUDER\-NEWLIST" "8" "June 2012" "" ""
5
- .
6
- .SH "NAME"
7
- \fBschleuder\-newlist\fR \- create new Schleuder mailing list
8
- .
9
- .SH "SYNOPSIS"
10
- \fBschleuder\-newlist\fR [\-c \fIbaseconfig\fR] \fInewlist@example\.net\fR
11
- .
12
- .br
13
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~[\-realname "\fIFoo List\fR"]
14
- .
15
- .br
16
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~[\-adminaddress \fIlistadmin@example\.net\fR]
17
- .
18
- .br
19
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~[\-initmember \fImember1@example\.net\fR
20
- .
21
- .br
22
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\-initmemberkey \fIpath\-to\-initmember\-publickey\fR]
23
- .
24
- .br
25
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~[\-privatekeyfile \fIpath\-to\-privatekey\fR
26
- .
27
- .br
28
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\-publickeyfile \fIpath\-to\-publickey\fR
29
- .
30
- .br
31
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\-passphrase "\fIkey passphrase\fR"]
32
- .
33
- .br
34
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~[\-mailuser \fIschleuder\fR]
35
- .
36
- .br
37
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~[\-mailgroup \fIschleuder\fR]
38
- .
39
- .br
40
- \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~[\-nointeractive]
41
- .
42
- .SH "DESCRIPTION"
43
- \fBschleuder\-newlist\fR automates the creation of new Schleuder mailing lists\. For more information on Schleuder, please look at \fBschleuder\fR(8)\.
44
- .
45
- .P
46
- \fBschleuder\-newlist\fR does various input validation, and can generate a key or import one\. It will give you as well an easy interface to build new lists in a scripted manner\.
47
- .
48
- .P
49
- It also supports an interactive mode, with which the user will be prompted for missing mandatory options\. The interactive mode can be disabled, using the \fB\-nointercative\fR flag; it is automatically disabled if the script isn\'t run within a valid tty\.
50
- .
51
- .P
52
- If no \fB\-privatekeyfile\fR, \fB\-publickeyfile\fR and \fB\-passphrase\fR are provided, the list will create a new keypair with a random password\. The type and length of the generated keypair is specified in \fB/etc/schleuder/schleuder\.conf\fR\.
53
- .
54
- .SH "OPTIONS"
55
- .
56
- .TP
57
- \fB\-c\fR \fIpath\-to\-schleuder\-configuration\fR:
58
- .
59
- .IP
60
- Specify an alternate configuration directory than the default \fB/etc/schleuder\fR\.
61
- .
62
- .TP
63
- \fB\-realname\fR "\fIFoo List\fR"
64
- Specify the name of the mailing list\.
65
- .
66
- .TP
67
- \fB\-adminaddress\fR \fIlistadmin@example\.net\fR
68
- Specify the email address of a list administrator\. This address will be notified of errors, and depending on configuration may also be allowed to send restricted email commands\.
69
- .
70
- .TP
71
- \fB\-initmember\fR \fImember1@example\.net\fR
72
- Specify the first subscribed list member address\. Can be the same as the administrator address\. This option must be accompanied by \fB\-initmemberkey\fR\.
73
- .
74
- .TP
75
- \fB\-initmemberkey\fR \fIpath\-to\-initmember\-publickey\fR
76
- Specify the path to first subscribed list member public key\. \fB\-initmember\fR must also be specified\.
77
- .
78
- .TP
79
- \fB\-privatekeyfile\fR \fIpath\-to\-privatekey\fR
80
- Specify the path to a previously\-generated private key for the list\. This option must be accompanied by \fB\-publickeyfile\fR and \fB\-passphrase\fR\.
81
- .
82
- .TP
83
- \fB\-publickeyfile\fR \fIpath\-to\-publickey\fR
84
- Specify the path to a previously\-generated public key for the list\. This option must be accompanied by \fB\-privatekeyfile\fR and \fB\-passphrase\fR\.
85
- .
86
- .TP
87
- \fB\-passphrase\fR "\fIkey passphrase\fR"
88
- Specify the passphrase needed to access the private key specified in \fB\-privatekeyfile\fR\. This option must be accompanied by \fB\-publickeyfile\fR as well\.
89
- .
90
- .TP
91
- \fB\-mailuser\fR \fIschleuder\fR
92
- Specify the system user account under which \fBschleuder\fR(8) will be executed (when run as root, this defaults to \fBschleuder\fR)\.
93
- .
94
- .TP
95
- \fB\-mailgroup\fR \fIschleuder\fR
96
- Specify the system group under which \fBschleuder\fR(8) will be executed (when run as root, this defaults to \fBschleuder\fR)\.
97
- .
98
- .TP
99
- \fB\-nointeractive\fR
100
- When specified, no questions will be asked to complete missing information\.
101
- .
102
- .SH "EXAMPLES"
103
- This creates a new list called \fBtest1\fR with the initial member \fBfoo@bar\.ch\fR\. A new keypair will be generated for the list\.
104
- .
105
- .IP "" 4
106
- .
107
- .nf
108
-
109
- schleuder\-newlist foobar@example\.org \e
110
- \-realname "bal jak" \e
111
- \-adminaddress admin@example\.org \e
112
- \-initmember foo@example\.com \-initmemberkey /tmp/foo\.pub
113
- .
114
- .fi
115
- .
116
- .IP "" 0
117
- .
118
- .P
119
- The list test2 will be created, a keypair from the following files with the passphrase \fBtest\fR will be imported\.
120
- .
121
- .IP "" 4
122
- .
123
- .nf
124
-
125
- schleuder\-newlist test2@example\.com \e
126
- \-realname "bal jak" \e
127
- \-adminaddress foobar@example\.org \e
128
- \-privatekeyfile ~/tmp/test2\.priv \e
129
- \-publickeyfile /tmp/test2\.pub \e
130
- \-passphrase test
131
- .
132
- .fi
133
- .
134
- .IP "" 0
135
- .
136
- .SH "FILES"
137
- .
138
- .TP
139
- \fB/etc/schleuder/schleuder\.conf\fR
140
- global Schleuder configuration
141
- .
142
- .TP
143
- \fB/etc/schleuder/default\-list\.conf\fR
144
- default list settings
145
- .
146
- .TP
147
- \fB/var/schleuderlists/\fR\fIHOSTNAME\fR\fB/\fR\fILISTNAME\fR
148
- list internal data
149
- .
150
- .TP
151
- \fB/var/schleuderlists/\fR\fIHOSTNAME\fR\fB/\fR\fILISTNAME\fR\fB/list\.conf\fR
152
- list settings
153
- .
154
- .TP
155
- \fB/var/schleuderlists/\fR\fIHOSTNAME\fR\fB/\fR\fILISTNAME\fR\fB/members\.conf\fR
156
- list susbcribers
157
- .
158
- .P
159
- All configuration files are formatted as YAML\. See \fIhttp://www\.yaml\.org/\fR for more details\.
160
- .
161
- .SH "BUGS"
162
- Known bugs are listed on the Schleuder website\.
163
- .
164
- .SH "SEE ALSO"
165
- \fBschleuder\fR(8), \fBaliases\fR(5), \fBgnupg\fR(7)\.
166
- .
167
- .TP
168
- Schleuder website
169
- \fIhttp://schleuder\.nadir\.org/\fR
170
- .
171
- .TP
172
- YAML website
173
- \fIhttp://www\.yaml\.org/\fR
174
-
@@ -1,416 +0,0 @@
1
- .\" generated with Ronn/v0.7.3
2
- .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
- .
4
- .TH "SCHLEUDER" "8" "June 2012" "" ""
5
- .
6
- .SH "NAME"
7
- \fBschleuder\fR \- a groups email gateway
8
- .
9
- .SH "SYNOPSIS"
10
- \fBschleuder\fR [\-c \fIbaseconfig\fR] \fIlistaddress\fR < \fIemail\fR
11
- .
12
- .br
13
- \fBschleuder\fR [\-c \fIbaseconfig\fR] \-test [\fIlistaddress\fR]
14
- .
15
- .SH "DESCRIPTION"
16
- Schleuder is a groups email gateway: subscribers can communicate encrypted (and pseudonymously) among themselves, receive emails from non\-subscribers and send emails to non\-subscribers via the list\.
17
- .
18
- .P
19
- Schleuder takes care of all decryption and encryption, stripping of headers, format conversions, etc\. Schleuder can also send out its own public key upon request and process administrative commands received by email\.
20
- .
21
- .P
22
- Email cryptography is handled by using GnuPG\. Schleuder understands all common encapsulation formats: \fBinline\fR, \fBmultipart/encrypted\fR and \fBmultipart/signed\fR\.
23
- .
24
- .P
25
- schleuder(8) is usually called in delivery mode by a \fIMail Transport Agent\fR with an incoming email piped to its standard input\. For more informations on how to integrate Schleuder with your existing mail setup, please look at the Schleuder website: \fIhttp://schleuder\.nadir\.org/\fR
26
- .
27
- .P
28
- schleuder\-newlist(8) automates the creation of new mailing lists\.
29
- .
30
- .SH "AUTOMATIC SENDING OF LIST PUBLIC KEY"
31
- To receive the public key of the mailing list anybody can send an email to the special list address which includes \fB\-sendkey\fR as a postfix:
32
- .
33
- .IP "" 4
34
- .
35
- .nf
36
-
37
- listname\-sendkey@example\.org
38
- .
39
- .fi
40
- .
41
- .IP "" 0
42
- .
43
- .P
44
- Schleuder will reply with the public key of the list without forwarding the request to the list\-members\.
45
- .
46
- .SH "EMAIL COMMANDS"
47
- Schleuder provides some special commands for advanced features to be used by list\-members\. Generally they are called by keywords written into the first non\-blank line of an email\. Schleuder scans for those keywords in every incoming email that is encrypted and validly signed by a list\-admin or \(em if allowed by the list\'s configuration \(em a list\-member\.
48
- .
49
- .P
50
- Administrative commands (membership and key management) must be sent to the request\-address or the list, which includes \fB\-request\fR as a postfix:
51
- .
52
- .IP "" 4
53
- .
54
- .nf
55
-
56
- listname\-request@example\.org
57
- .
58
- .fi
59
- .
60
- .IP "" 0
61
- .
62
- .P
63
- Communicative commands (resending) must be sent to the normal list\-address\.
64
- .
65
- .SS "Membership management"
66
- Resending is a list\-command, that means it is only allowed in emails sent over the mailing list\.
67
- .
68
- .TP
69
- To receive the list of members send:
70
- .
71
- .IP "" 4
72
- .
73
- .nf
74
-
75
- X\-LIST\-MEMBERS
76
- .
77
- .fi
78
- .
79
- .IP "" 0
80
- .
81
- .IP
82
- You will receive a list of list\-admins and list\-members, and their public keys (or the lack thereof)\.
83
- .
84
- .TP
85
- To see details on one list\-member, including his/her public key:
86
- .
87
- .IP "" 4
88
- .
89
- .nf
90
-
91
- X\-GET\-MEMBER: you@example\.net
92
- .
93
- .fi
94
- .
95
- .IP "" 0
96
-
97
- .
98
- .TP
99
- To unsubscribe from the mailing\-list:
100
- .
101
- .IP "" 4
102
- .
103
- .nf
104
-
105
- X\-UNSUBSCRIBE
106
- .
107
- .fi
108
- .
109
- .IP "" 0
110
- .
111
- .IP
112
- This will remove the member associated with the sender\'s signing key\.
113
- .
114
- .TP
115
- To add a member:
116
- .
117
- .IP "" 4
118
- .
119
- .nf
120
-
121
- X\-ADD\-MEMBER: you@example\.net mime
122
- \-\-\-\-\-BEGIN PGP PUBLIC KEY BLOCK\-\-\-\-\-
123
- Version: GnuPG v1\.4\.9 (GNU/Linux)
124
-
125
- mQGiBEjVO7oRBADQvT6wtD2IzzIiK0NbrcilCKCp4MWb8cYXTXguwPQI6y0Nerz4
126
- dsK6J0X1Vgeo02tqA4xd3EDK8rdqL2yZfl/2egH8+85R3gDk+kqkfEp4pwCgp6VO
127
- [\.\.\.]
128
- pNlF/qkaWwRb048h+iMrW21EkouLKTDPFkdFbapV2X5KJZIcfhO1zEbwc1ZKF3Ju
129
- Q9X5GRmY62hz9SCZnsC0jeYAni8OUQV9NXfXlS/vePBUnOL08NQB
130
- =xTv3
131
- \-\-\-\-\-END PGP PUBLIC KEY BLOCK\-\-\-\-\-
132
- .
133
- .fi
134
- .
135
- .IP "" 0
136
- .
137
- .IP
138
- \fBmime\fR could also be \fBplain\fR (for receiving \fBinline\fR\-encapsulated messages) or be skipped (then the list\'s default setting is used)\.
139
- .
140
- .IP
141
- The public key block is also optional\.
142
- .
143
- .TP
144
- To delete a member from the list:
145
- .
146
- .IP "" 4
147
- .
148
- .nf
149
-
150
- X\-DELETE\-MEMBER: you@example\.net
151
- .
152
- .fi
153
- .
154
- .IP "" 0
155
- .
156
- .IP
157
- Please note that this doesn\'t delete any public keys\.
158
- .
159
- .SS "Key management"
160
- .
161
- .TP
162
- To receive the list of public keys known to the list:
163
- .
164
- .IP "" 4
165
- .
166
- .nf
167
-
168
- X\-LIST\-KEYS
169
- .
170
- .fi
171
- .
172
- .IP "" 0
173
-
174
- .
175
- .TP
176
- To receive a certain public key known to the list:
177
- .
178
- .IP "" 4
179
- .
180
- .nf
181
-
182
- X\-GET\-KEY: foobar@example\.com
183
- .
184
- .fi
185
- .
186
- .IP "" 0
187
- .
188
- .IP
189
- You can also specify a KeyID, or parts of it, as long as it identifies the key distinctly\.
190
- .
191
- .TP
192
- To add a public key to the list:
193
- .
194
- .IP "" 4
195
- .
196
- .nf
197
-
198
- X\-ADD\-KEY:
199
- \-\-\-\-\-BEGIN PGP PUBLIC KEY BLOCK\-\-\-\-\-
200
- Version: GnuPG v1\.4\.9 (GNU/Linux)
201
-
202
- mQGiBEjVO7oRBADQvT6wtD2IzzIiK0NbrcilCKCp4MWb8cYXTXguwPQI6y0Nerz4
203
- dsK6J0X1Vgeo02tqA4xd3EDK8rdqL2yZfl/2egH8+85R3gDk+kqkfEp4pwCgp6VO
204
- [\.\.\.]
205
- pNlF/qkaWwRb048h+iMrW21EkouLKTDPFkdFbapV2X5KJZIcfhO1zEbwc1ZKF3Ju
206
- Q9X5GRmY62hz9SCZnsC0jeYAni8OUQV9NXfXlS/vePBUnOL08NQB
207
- =xTv3
208
- \-\-\-\-\-END PGP PUBLIC KEY BLOCK\-\-\-\-\-
209
- .
210
- .fi
211
- .
212
- .IP "" 0
213
-
214
- .
215
- .TP
216
- To delete a key from the list\'s keyring:
217
- .
218
- .IP "" 4
219
- .
220
- .nf
221
-
222
- X\-DELETE\-KEY: 0xDEADBEEF
223
- .
224
- .fi
225
- .
226
- .IP "" 0
227
- .
228
- .IP
229
- You can also specify an email address, as long as it identifies the key distinctly\.
230
- .
231
- .SS "Resending"
232
- Resending is a list\-command, that means it is only allowed in emails sent over the mailing list\.
233
- .
234
- .TP
235
- To send out an email to an external recipient (encrypted if possible, otherwise in the clear):
236
- .
237
- .IP "" 4
238
- .
239
- .nf
240
-
241
- X\-RESEND: emailaddress@example\.net
242
- .
243
- .fi
244
- .
245
- .IP "" 0
246
-
247
- .
248
- .TP
249
- Or to send it only if encryption is available:
250
- .
251
- .IP "" 4
252
- .
253
- .nf
254
-
255
- X\-RESEND\-ENCRYPTED\-ONLY: emailaddress@example\.net
256
- .
257
- .fi
258
- .
259
- .IP "" 0
260
-
261
- .
262
- .TP
263
- To specify multiple recipients separate the addresses with spaces or specify the command multiple times:
264
- .
265
- .IP "" 4
266
- .
267
- .nf
268
-
269
- X\-RESEND: you@example\.net me@example\.net
270
- .
271
- .fi
272
- .
273
- .IP "" 0
274
- .
275
- .IP
276
- or
277
- .
278
- .IP "" 4
279
- .
280
- .nf
281
-
282
- X\-RESEND: you@example\.net
283
- X\-RESEND: me@example\.net
284
- .
285
- .fi
286
- .
287
- .IP "" 0
288
- .
289
- .IP
290
- With the first format don\'t let your Mail User Agent break long lines!
291
- .
292
- .SS "Misc\."
293
- .
294
- .IP "\(bu" 4
295
- To know which version of Schleuder is installed: X\-GET\-VERSION
296
- .
297
- .IP "" 0
298
- .
299
- .SH "OPTIONS"
300
- .
301
- .TP
302
- \fB\-c\fR \fIpath\-to\-schleuder\-configuration\fR
303
- Specify an alternate configuration directory than the default \fB/etc/schleuder\fR\.
304
- .
305
- .TP
306
- \fB\-test\fR
307
- Instead of processing an incoming email, specifying this flag will make Schleuder verify that the setup and basic settings are in a workable state\.
308
- .
309
- .TP
310
- \fB\-h\fR
311
- Display usage and exit\.
312
- .
313
- .SH "EXIT STATUS"
314
- .
315
- .TP
316
- 0
317
- Incoming email was processed without errors\.
318
- .
319
- .IP
320
- Configuration is correct in test mode\.
321
- .
322
- .TP
323
- 1
324
- Internal failure in incoming email processing\.
325
- .
326
- .IP
327
- Bad configuration in test mode\.
328
- .
329
- .TP
330
- 100
331
- Unable to decrypt the received message\.
332
- .
333
- .IP
334
- Unable to verify the signature when configured to only accept signed messages\.
335
- .
336
- .IP
337
- Message is cleartext when only encrypted messages are allowed\.
338
- .
339
- .IP
340
- Message is not authenticated as coming from a list\-member when authentication is required\.
341
- .
342
- .SH "FILES"
343
- .
344
- .IP "\(bu" 4
345
- \fB/etc/schleuder/schleuder\.conf\fR: global Schleuder configuration
346
- .
347
- .IP "\(bu" 4
348
- \fB/etc/schleuder/default\-list\.conf\fR: default list settings
349
- .
350
- .IP "\(bu" 4
351
- \fB/var/schleuderlists/\fR\fILISTNAME\fR\fB/list\.conf\fR: list settings
352
- .
353
- .IP "\(bu" 4
354
- \fB/var/schleuderlists/\fR\fILISTNAME\fR\fB/members\.conf\fR: list susbcribers\.
355
- .
356
- .IP
357
- Each member must have the email\-attribute set\. All other attributes are optional\.
358
- .
359
- .IP
360
- The following attributes are available:
361
- .
362
- .IP "\(bu" 4
363
- \fBmime\fR: defines the \'pgp\-variant\' to send to the member, possible values are \fBMIME\fR (for pgp/mime\-formatted mail according to RFC 3156), and \fBPLAIN\fR (for inline\-pgp)\. The fallback\-default for this is defined in the \fBlist\.conf\fR\.
364
- .
365
- .IP "\(bu" 4
366
- \fBencrypted_only\fR: schleuder tries to encrypt every outgoing email\. If that is not possible under some conditions it sends the email unecrypted\. If this attribute is set the member will never receive unencrypted emails; the member will be skipped if encrypting is not possible\.
367
- .
368
- .IP "" 0
369
- .
370
- .IP
371
- Example:
372
- .
373
- .IP "" 4
374
- .
375
- .nf
376
-
377
- \- email: you@example\.net
378
- \- email: me@example\.org
379
- mime: PLAIN
380
- \- email: them@example\.com
381
- encrypted_only: true
382
- .
383
- .fi
384
- .
385
- .IP "" 0
386
-
387
- .
388
- .IP "\(bu" 4
389
- \fB/var/schleuderlists/\fR\fIHOSTNAME\fR\fB/\fR\fILISTNAME\fR: list internal data
390
- .
391
- .IP "\(bu" 4
392
- \fB/var/log/schleuder\fR: Schleuder logs directory
393
- .
394
- .IP "" 0
395
- .
396
- .P
397
- All configuration files are formatted as YAML\. See \fIhttp://www\.yaml\.org/\fR for more details\.
398
- .
399
- .SH "BUGS"
400
- Known bugs are listed on the Schleuder bugtracker at \fIhttps://git\.codecoop\.org/projects/schleuder\fR
401
- .
402
- .SH "SEE ALSO"
403
- \fBschleuder\-newlist\fR(8), \fBgnupg\fR(7)\.
404
- .
405
- .TP
406
- Schleuder website
407
- \fIhttp://schleuder\.nadir\.org/\fR
408
- .
409
- .TP
410
- Webschleuder website
411
- \fIhttp://webschleuder\.nadir\.org/\fR (web interface to schleuder)
412
- .
413
- .TP
414
- YAML website
415
- \fIhttp://www\.yaml\.org/\fR
416
-