ConfDef.pm 103 KB
Newer Older
1
2
3
4
# -*- indent-tabs-mode: nil; -*-
# vim:ft=perl:et:sw=4
# $Id$

5
# Sympa - SYsteme de Multi-Postage Automatique
6
7
8
9
#
# Copyright (c) 1997, 1998, 1999 Institut Pasteur & Christophe Wolfhugel
# Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
# 2006, 2007, 2008, 2009, 2010, 2011 Comite Reseau des Universites
10
# Copyright (c) 2011, 2012, 2013, 2014, 2015, 2016, 2017 GIP RENATER
11
12
# Copyright 2017, 2018, 2019, 2020 The Sympa Community. See the AUTHORS.md
# file at the top-level directory of this distribution and at
13
# <https://github.com/sympa-community/sympa.git>.
14
15
16
17
18
19
20
21
22
23
24
25
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
26
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
27

28
package Sympa::ConfDef;
29

30
31
use strict;
use warnings;
32

33
use Sympa::Constants;
34
35

our @params = (
36
37
38
    # Sympa services

    {'gettext_id' => 'Service description'},
39

40
    {   'name'       => 'domain',
IKEDA Soji's avatar
IKEDA Soji committed
41
42
        'gettext_id' => 'Primary mail domain name',
        'sample'     => 'mail.example.org',
43
44
        'edit'       => '1',
        'file'       => 'sympa.conf',
IKEDA Soji's avatar
IKEDA Soji committed
45
        'vhost' => '1',    #FIXME:not used in robot.conf.
46
    },
47
48
49
50
51
52
53
54
55
    {   'name'       => 'listmaster',
        'sample'     => 'your_email_address@domain.tld',
        'gettext_id' => 'Email addresses of listmasters',
        'file'       => 'sympa.conf',
        'split_char' => ',',
        'vhost'      => '1',
        'edit'       => '1',
        'gettext_comment' =>
            'Email addresses of the listmasters (users authorized to perform global server commands). Some error reports may also be sent to these addresses. Listmasters can be defined for each virtual host, however, the default listmasters will have privileges to manage all virtual hosts.',
56
    },
57
58
59
    {   'name'       => 'lang',
        'default'    => 'en-US',
        'gettext_id' => 'Default language',
IKEDA Soji's avatar
IKEDA Soji committed
60
        'vhost'      => '1',
61
        'file'       => 'sympa.conf',
IKEDA Soji's avatar
IKEDA Soji committed
62
        'edit'       => '1',
63
64
65
66
67
68
69
70
        'gettext_comment' =>
            'This is the default language used by Sympa. One of supported languages should be chosen.',
    },
    {   'name' => 'supported_lang',
        'default' =>
            'ca,cs,de,el,en-US,es,et,eu,fi,fr,gl,hu,it,ja,ko,nb,nl,oc,pl,pt-BR,ru,sv,tr,vi,zh-CN,zh-TW',
        'gettext_id' => 'Supported languages',
        'vhost'      => '1',
IKEDA Soji's avatar
IKEDA Soji committed
71
        'file'       => 'sympa.conf',
72
73
        'split_char' => ',',
        'edit'       => '1',
IKEDA Soji's avatar
IKEDA Soji committed
74
        'gettext_comment' =>
75
76
77
78
79
80
81
82
83
84
            'All supported languages for the user interface. Languages proper locale information not installed are ignored.',
    },
    {   'name'       => 'title',                   #FIXME:Not specific to web
        'default'    => 'Mailing lists service',
        'gettext_id' => 'Title of service',
        'gettext_comment' =>
            'The name of your mailing list service. It will appear in the header of web interface and subjects of several service messages.',
        'vhost' => '1',
        'file'  => 'wwsympa.conf',
        'edit'  => '1',
85
    },
86
87
    {   'name'       => 'gecos',
        'default'    => 'SYMPA',
IKEDA Soji's avatar
IKEDA Soji committed
88
        'gettext_id' => 'Display name of Sympa',
89
90
91
92
        'vhost'      => '1',
        'edit'       => '1',
        'file'       => 'sympa.conf',
        'gettext_comment' =>
IKEDA Soji's avatar
IKEDA Soji committed
93
            'This parameter is used for display name in the "From:" header field for the messages sent by Sympa itself.',
94
    },
95
96
97
    {   'name'       => 'legacy_character_support_feature',
        'default'    => 'off',
        'gettext_id' => 'Support of legacy character set',
98
99
100
        'file'       => 'sympa.conf',
        'edit'       => '1',
        'gettext_comment' =>
101
            "If set to \"on\", enables support of legacy character set according to charset.conf(5) configuration file.\nIn some language environments, legacy encoding (character set) can be preferred for e-mail messages: for example iso-2022-jp in Japanese language.",
102
    },
103
104
105
106
107

    {'gettext_id' => 'Database related'},

    {   'name'       => 'update_db_field_types',
        'gettext_id' => 'Update database structure',
IKEDA Soji's avatar
IKEDA Soji committed
108
        'gettext_comment' =>
109
110
            "auto: Updates database table structures automatically.\nHowever, since version 5.3b.5, Sympa will not shorten field size if it already have been longer than the size defined in database definition.",
        'default' => 'auto',
111
    },
112
113
114
    {   'name'       => 'db_type',
        'default'    => 'mysql',
        'gettext_id' => 'Type of the database',
IKEDA Soji's avatar
IKEDA Soji committed
115
        'gettext_comment' =>
IKEDA Soji's avatar
IKEDA Soji committed
116
            'Possible types are "MySQL", "PostgreSQL", "Oracle" and "SQLite".',
117
118
        'file' => 'sympa.conf',
        'edit' => '1',
119
    },
IKEDA Soji's avatar
IKEDA Soji committed
120
    {   'name' => 'db_host',
121
        #'default'    => 'localhost',
122
123
        'sample'     => 'localhost',
        'gettext_id' => 'Hostname of the database server',
IKEDA Soji's avatar
IKEDA Soji committed
124
        'gettext_comment' =>
125
            'With PostgreSQL, you can also use the path to Unix Socket Directory, e.g. "/var/run/postgresql" for connection with Unix domain socket.',
IKEDA Soji's avatar
IKEDA Soji committed
126
127
        'file'     => 'sympa.conf',
        'edit'     => '1',
128
        'optional' => 1,
129
    },
130
131
132
133
134
135
136
137
138
139
140
    {   'name'       => 'db_port',
        'default'    => undef,
        'gettext_id' => 'Port of the database server',
        'file'       => 'sympa.conf',
        'optional'   => '1',
    },
    {   'name'       => 'db_name',
        'default'    => 'sympa',
        'gettext_id' => 'Name of the database',
        'file'       => 'sympa.conf',
        'edit'       => '1',
IKEDA Soji's avatar
IKEDA Soji committed
141
        'gettext_comment' =>
142
            "With SQLite, this must be the full path to database file.\nWith Oracle Database, this must be SID, net service name or easy connection identifier (to use net service name, db_host should be set to \"none\" and HOST, PORT and SERVICE_NAME should be defined in tnsnames.ora file).",
143
    },
144
145
146
147
148
149
    {   'name'       => 'db_user',
        'default'    => 'user_name',
        'sample'     => 'sympa',
        'gettext_id' => 'User for the database connection',
        'file'       => 'sympa.conf',
        'edit'       => '1',
150
    },
151
152
153
154
155
156
157
    {   'name'       => 'db_passwd',
        'default'    => 'user_password',
        'sample'     => 'your_passwd',
        'gettext_id' => 'Password for the database connection',
        'file'       => 'sympa.conf',
        'edit'       => '1',
        'obfuscated' => '1',
IKEDA Soji's avatar
IKEDA Soji committed
158
        'gettext_comment' =>
159
            'What ever you use a password or not, you must protect the SQL server (is it not a public internet service ?)',
160
    },
161
162
    {   'name'       => 'db_options',
        'gettext_id' => 'Database options',
IKEDA Soji's avatar
IKEDA Soji committed
163
        'gettext_comment' =>
164
165
166
167
            'If these options are defined, they will be appended to data source name (DSN) fed to database driver. Check the related DBD documentation to learn about the available options.',
        'sample' =>
            'mysql_read_default_file=/home/joe/my.cnf;mysql_socket=tmp/mysql.sock-test',
        'optional' => '1',
168
    },
169
170
171
    {   'name'       => 'db_env',
        'gettext_id' => 'Environment variables setting for database',
        'file'       => 'sympa.conf',
IKEDA Soji's avatar
IKEDA Soji committed
172
        'gettext_comment' =>
173
174
175
176
            'With Oracle Database, this is useful for defining ORACLE_HOME and NLS_LANG.',
        'sample' =>
            'NLS_LANG=American_America.AL32UTF8;ORACLE_HOME=/u01/app/oracle/product/11.2.0/server',
        'optional' => '1',
177
    },
178
179
    {   'name'       => 'db_timeout',
        'gettext_id' => 'Database processing timeout',
IKEDA Soji's avatar
IKEDA Soji committed
180
        'gettext_comment' =>
181
182
            'Currently, this parameter may be used for SQLite only.',
        'optional' => '1',
183
    },
184
185
186
187
188
189
190
191
    {   'name'       => 'db_additional_subscriber_fields',
        'sample'     => 'billing_delay,subscription_expiration',
        'gettext_id' => 'Database private extension to subscriber table',
        'file'       => 'sympa.conf',
        'split_char' => ',',
        'gettext_comment' =>
            "Adds more fields to \"subscriber_table\" table. Sympa recognizes fields defined with this parameter. You will then be able to use them from within templates and scenarios:\n* for scenarios: [subscriber->field]\n* for templates: [% subscriber.field %]\nThese fields will also appear in the list members review page and will be editable by the list owner. This parameter is a comma-separated list.\nYou need to extend the database format with these fields",
        'optional' => '1',
192
    },
193
194
195
196
197
198
199
200
    {   'name'       => 'db_additional_user_fields',
        'sample'     => 'age,address',
        'gettext_id' => 'Database private extension to user table',
        'file'       => 'sympa.conf',
        'split_char' => ',',
        'gettext_comment' =>
            "Adds more fields to \"user_table\" table. Sympa recognizes fields defined with this parameter. You will then be able to use them from within templates: [% subscriber.field %]\nThis parameter is a comma-separated list.\nYou need to extend the database format with these fields",
        'optional' => '1',
201
    },
202
203
204
205
206
207
208
209
210

    {'gettext_id' => 'System log'},

    {   'name'            => 'syslog',
        'default'         => 'LOCAL1',
        'gettext_id'      => 'System log facility for Sympa',
        'file'            => 'sympa.conf',
        'edit'            => '1',
        'gettext_comment' => 'Do not forget to configure syslog server.',
211
    },
212
213
214
215
216
    {   'name'       => 'log_socket_type',
        'default'    => 'unix',
        'gettext_id' => 'Communication mode with syslog server',
        'file'       => 'sympa.conf',
        'edit'       => '1',
217
    },
218
219
220
221
222
223
224
225
    {   'name'       => 'log_level',
        'default'    => '0',
        'sample'     => '2',
        'gettext_id' => 'Log verbosity',
        'vhost'      => '1',
        'file'       => 'sympa.conf',
        'gettext_comment' =>
            "Sets the verbosity of logs.\n0: Only main operations are logged\n3: Almost everything is logged.",
226
    },
227
228
229
230
231
232
233
234
235

    {'gettext_id' => 'Alias management'},

    {   'name'       => 'aliases_program',
        'default'    => 'newaliases',
        'gettext_id' => 'Program used to update alias database',
        'gettext_comment' =>
            'This may be "makemap", "newaliases", "postalias", "postmap" or full path to custom program.',
        'vhost' => '1',
236
    },
237
238
239
240
241
242
    {   'name'       => 'aliases_db_type',
        'default'    => 'hash',
        'gettext_id' => 'Type of alias database',
        'gettext_comment' =>
            '"btree", "dbm", "hash" and so on.  Available when aliases_program is "makemap", "postalias" or "postmap"',
        'vhost' => '1',
243
    },
244
245
246
247
248
249
250
    {   'name'      => 'sendmail_aliases',
        'default_s' => '$SENDMAIL_ALIASES',
        'gettext_id' =>
            'Path of the file that contains all list related aliases',
        'gettext_comment' =>
            "It is recommended to create a specific alias file so that Sympa never overwrites the standard alias file, but only a dedicated file.\nSet this parameter to \"none\" if you want to disable alias management in Sympa.",
        'vhost' => '1',
251
    },
252
253
254
255
256
257
258
    {   'name'       => 'alias_manager',
        'gettext_id' => 'Path to alias manager',
        'gettext_comment' =>
            'The absolute path to the script that will add/remove mail aliases',

        'default_s' => '$SBINDIR/alias_manager.pl',
        'sample'    => '/usr/local/libexec/ldap_alias_manager.pl',
259
    },
260
261
262
263
264
265
266
267
268
269
270

    {'gettext_id' => 'Receiving'},

    {   'name'       => 'default_max_list_members',
        'gettext_id' => 'Default maximum number of list members',
        'default'    => '0',
        'optional'   => '1',
        'gettext_comment' =>
            'Default limit for the number of subscribers per list (0 means no limit).',
        'vhost' => '1',
        'file'  => 'sympa.conf',
271
    },
272
273
274
275
276
277
278
279
280
281
282

    {   'name'       => 'max_size',
        'gettext_id' => 'Maximum size of messages',
        'gettext_comment' =>
            'Incoming messages smaller than this size is allowed distribution by Sympa.',
        'gettext_unit' => 'bytes',
        'default'      => '5242880',      ## 5 MiB
        'sample'       => '2097152',
        'vhost'        => '1',
        'file'         => 'sympa.conf',
        'edit'         => '1',
283
    },
284
285
286
287
288
289
290
    {   'name'       => 'reject_mail_from_automates_feature',
        'gettext_id' => 'Reject mail sent from automated services to list',
        'gettext_comment' =>
            "Rejects messages that seem to be from automated services, based on a few header fields (\"Content-Identifier:\", \"Auto-Submitted:\").\nSympa also can be configured to reject messages based on the \"From:\" header field value (see \"loop_prevention_regex\").",
        'default' => 'on',
        'sample'  => 'off',
        'file'    => 'sympa.conf',
291
    },
292
293
294
295
296
297
298
299
    {   'name'    => 'sender_headers',
        'default' => 'From',
        'sample'  => 'Resent-From,From,Return-Path',
        'gettext_id' =>
            'Header field name(s) used to determine sender of the messages',
        'gettext_comment' =>
            '"Return-Path" means envelope sender (a.k.a. "UNIX From") which will be alternative to sender of messages without "From" field.  "Resent-From" may also be inserted before "From", because some mailers add it into redirected messages and keep original "From" field intact.  In particular cases, "Return-Path" can not give right sender: several mail gateway products rewrite envelope sender and add original one as non-standard field such as "X-Envelope-From".  If that is the case, you might want to insert it in place of "Return-Path".',
        'split_char' => ',',
300
    },
301
302
303
304
305
306

    {   'name'       => 'misaddressed_commands',
        'gettext_id' => 'Reject misaddressed commands',
        'gettext_comment' =>
            'When a mail command is sent to a list, by default Sympa rejects this message. This feature can be turned off setting this parameter to "ignore".',
        'default' => 'reject',
307
    },
308
309
310
311
312
313
314
    {   'name' => 'misaddressed_commands_regexp',
        'gettext_id' =>
            'Regular expression matching with misaddressed commands',
        'gettext_comment' =>
            'Perl regular expression applied on messages subject and body to detect misaddressed commands.',
        'default' =>
            '((subscribe\s+(\S+)|unsubscribe\s+(\S+)|signoff\s+(\S+)|set\s+(\S+)\s+(mail|nomail|digest))\s*)',
315
    },
316
317
318
319
320
321
    {   'name'       => 'sympa_priority',
        'gettext_id' => 'Priority for command messages',
        'gettext_comment' =>
            'Priority applied to messages sent to Sympa command address.',
        'file'    => 'sympa.conf',
        'default' => '1',
322
        'vhost'   => '1',
323
    },
324
325
326
327
328
329
    {   'name'       => 'request_priority',
        'gettext_id' => 'Priority for messages bound for list owners',
        'gettext_comment' =>
            'Priority for processing of messages bound for "LIST-request" address, i.e. owners of the list',
        'default' => '0',
        'file'    => 'sympa.conf',
330
        'vhost'   => '1',
331
    },
332
333
334
335
336
337
    {   'name'       => 'owner_priority',
        'gettext_id' => 'Priority for non-VERP bounces',
        'gettext_comment' =>
            'Priority for processing of messages bound for "LIST-owner" address, i.e. non-delivery reports (bounces).',
        'default' => '9',
        'file'    => 'sympa.conf',
338
        'vhost'   => '1',
339
    },
340
341
342
343
344
345
    {   'name'       => 'default_list_priority',
        'gettext_id' => 'Default priority for list messages',
        'gettext_comment' =>
            'Priority for processing of messages posted to list addresses.',
        'file'    => 'sympa.conf',
        'default' => '5',
346
        'vhost'   => '1',
347
    },
348
349
350
    {   'name'       => 'incoming_max_count',
        'default'    => '1',
        'gettext_id' => 'Max number of sympa.pl workers',
IKEDA Soji's avatar
IKEDA Soji committed
351
        'gettext_comment' =>
352
            'Max number of workers of sympa.pl daemon processing incoming spool.',
353
    },
354
355
356
357
358
359

    {   'name'       => 'sleep',
        'default'    => '5',
        'gettext_id' => 'Interval between scanning incoming message spool',
        'gettext_comment' => 'Must not be 0.',
        'gettext_unit'    => 'seconds',
360
    },
361
362
363
364
365
366

    {'gettext_id' => 'Sending related'},

    {   'name' => 'anonymous_header_fields',
        'gettext_id' =>
            'Header fields removed when a mailing list is setup in anonymous mode',
IKEDA Soji's avatar
IKEDA Soji committed
367
        'gettext_comment' =>
368
369
370
371
            "See \"anonymous_sender\" list parameter.\nDefault value prior to Sympa 6.1.19 is:\n  Sender,X-Sender,Received,Message-id,From,X-Envelope-To,Resent-From,Reply-To,Organization,Disposition-Notification-To,X-Envelope-From,X-X-Sender",
        'default' =>
            'Authentication-Results,Disposition-Notification-To,DKIM-Signature,Injection-Info,Organisation,Organization,Original-Recipient,Originator,Path,Received,Received-SPF,Reply-To,Resent-Reply-To,Return-Receipt-To,X-Envelope-From,X-Envelope-To,X-Sender,X-X-Sender',
        'split_char' => ',',
372
    },
373
374
    {   'name'       => 'merge_feature',
        'gettext_id' => 'Allow message personalization by default',
IKEDA Soji's avatar
IKEDA Soji committed
375
        'gettext_comment' =>
376
377
            'This parameter defines the default "merge_feature" list parameter.',
        'default' => 'off',
378
    },
379
380
    {   'name'       => 'remove_headers',
        'gettext_id' => 'Header fields to be removed from incoming messages',
IKEDA Soji's avatar
IKEDA Soji committed
381
        'gettext_comment' =>
382
383
384
385
386
            "Use it, for example, to ensure some privacy for your users in case that \"anonymous_sender\" mode is inappropriate.\nThe removal of these header fields is applied before Sympa adds its own header fields (\"rfc2369_header_fields\" and \"custom_header\").",
        'default' =>
            'X-Sympa-To,X-Family-To,Return-Receipt-To,Precedence,X-Sequence,Disposition-Notification-To,Sender',
        'sample' =>
            'Resent-Date,Resent-From,Resent-To,Resent-Message-Id,Sender,Delivered-To',
IKEDA Soji's avatar
IKEDA Soji committed
387
        'file'       => 'sympa.conf',
388
        'split_char' => ',',
389
    },
390
391
392
    {   'name' => 'remove_outgoing_headers',
        'gettext_id' =>
            'Header fields to be removed before message distribution',
IKEDA Soji's avatar
IKEDA Soji committed
393
        'gettext_comment' =>
394
395
396
397
            "The removal happens after Sympa's own header fields are added; therefore, it is a convenient way to remove Sympa's own header fields (like \"X-Loop:\" or \"X-no-archive:\") if you wish.",
        'default'    => 'none',
        'sample'     => 'X-no-archive',
        'split_char' => ',',
398
    },
399
400
    {   'name'       => 'rfc2369_header_fields',
        'gettext_id' => 'RFC 2369 header fields',
IKEDA Soji's avatar
IKEDA Soji committed
401
        'gettext_comment' =>
402
403
404
405
            "Specify which RFC 2369 mailing list header fields to be added.\n\"List-Id:\" header field defined in RFC 2919 is always added. Sympa also adds \"Archived-At:\" header field defined in RFC 5064.",
        'default'    => 'help,subscribe,unsubscribe,post,owner,archive',
        'file'       => 'sympa.conf',
        'split_char' => ',',
406
    },
407
408
409
410
    {   'name'       => 'urlize_min_size',
        'gettext_id' => 'Minimum size to be urlized',
        'gettext_comment' =>
            'When a subscriber chose "urlize" reception mode, attachments not smaller than this size will be urlized.',
IKEDA Soji's avatar
IKEDA Soji committed
411
        'gettext_unit' => 'bytes',
412
        'default'      => 10240,     ## 10 kiB,
IKEDA Soji's avatar
IKEDA Soji committed
413
        'vhost'        => '1',
414
    },
415
416
417
418
419
420
421
422
423
    {   'name'       => 'allowed_external_origin',
        'gettext_id' => 'Allowed external links in sanitized HTML',
        'gettext_comment' =>
            'When the HTML content of a message must be sanitized, links ("href" or "src" attributes) with the hosts listed in this parameter will not be scrubbed. If "*" character is included, it matches any subdomains. Single "*" allows any hosts.',
        'split_char' => ',',
        'optional'   => '1',
        'sample'     => '*.example.org,www.example.com',
        'vhost'      => '1',
    },
424
425
426

    {   'name'       => 'sympa_packet_priority',
        'gettext_id' => 'Default priority for a packet',
427
        'file'       => 'sympa.conf',
428
        'default'    => '5',
429
        'vhost'      => '1',
IKEDA Soji's avatar
IKEDA Soji committed
430
        'gettext_comment' =>
431
            'The default priority set to a packet to be sent by the bulk.',
432
    },
433
434
435
436
    {   'name'       => 'bulk_fork_threshold',
        'default'    => '1',
        'gettext_id' => 'Fork threshold of bulk daemon',
        'file'       => 'sympa.conf',
IKEDA Soji's avatar
IKEDA Soji committed
437
        'gettext_comment' =>
438
            'The minimum number of packets before bulk daemon forks a new worker to increase sending rate.',
439
    },
440
441
442
443
    {   'name'       => 'bulk_max_count',
        'default'    => '3',
        'gettext_id' => 'Maximum number of bulk workers',
        'file'       => 'sympa.conf',
444
    },
445
446
447
448
    {   'name'       => 'bulk_lazytime',
        'default'    => '600',
        'gettext_id' => 'Idle timeout of bulk workers',
        'file'       => 'sympa.conf',
IKEDA Soji's avatar
IKEDA Soji committed
449
        'gettext_comment' =>
450
            'The number of seconds a bulk worker will remain running without processing a message before it spontaneously exits.',
451
        'gettext_unit' => 'seconds',
452
    },
453
454
455
    {   'name'       => 'bulk_sleep',
        'default'    => '1',
        'gettext_id' => 'Sleep time of bulk workers',
IKEDA Soji's avatar
IKEDA Soji committed
456
457
        'file'       => 'sympa.conf',
        'gettext_comment' =>
458
459
            "The number of seconds a bulk worker sleeps between starting a new loop if it didn't find a message to send.\nKeep it small if you want your server to be reactive.",
        'gettext_unit' => 'seconds',
460
    },
461
462
463
    {   'name'       => 'bulk_wait_to_fork',
        'default'    => '10',
        'gettext_id' => 'Interval between checks of packet numbers',
464
        'file'       => 'sympa.conf',
465
466
467
        'gettext_comment' =>
            "Number of seconds a master bulk daemon waits between two packets number checks.\nKeep it small if you expect brutal increases in the message sending load.",
        'gettext_unit' => 'seconds',
468
    },
469
##    {
470
471
##        'name'     => 'pidfile_bulk',
##        'default'  => Sympa::Constants::PIDDIR . '/bulk.pid',
472
473
474
##        'file'     => 'sympa.conf',
##    },

475
476
    {   'name'       => 'sendmail',
        'default'    => '/usr/sbin/sendmail',
IKEDA Soji's avatar
IKEDA Soji committed
477
        'gettext_id' => 'Path to sendmail',
478
        'gettext_comment' =>
Sympa authors's avatar
Sympa authors committed
479
            "Absolute path to sendmail command line utility (e.g.: a binary named \"sendmail\" is distributed with Postfix).\nSympa expects this binary to be sendmail compatible (exim, Postfix, qmail and so on provide it).",
IKEDA Soji's avatar
IKEDA Soji committed
480
481
        'file' => 'sympa.conf',
        'edit' => '1',
482
    },
IKEDA Soji's avatar
IKEDA Soji committed
483
484
485
486
    {   'name'       => 'sendmail_args',
        'default'    => '-oi -odi -oem',
        'gettext_id' => 'Command line parameters passed to sendmail',
        'gettext_comment' =>
487
            "Note that \"-f\", \"-N\" and \"-V\" options and recipient addresses should not be included, because they will be included by Sympa.",
488
    },
489
490
491
492
493
494
495
496
    {   'name'       => 'log_smtp',
        'gettext_id' => 'Log invocation of sendmail',
        'gettext_comment' =>
            'This can be overwritten by "-m" option for sympa.pl.',
        'default' => 'off',
        'vhost'   => '1',
        'file'    => 'sympa.conf',
    },
497
498
499
#    {   'name'    => 'distribution_mode',
#        'default' => 'single',
#    },
IKEDA Soji's avatar
IKEDA Soji committed
500
501
502
503
504
    {   'name'       => 'maxsmtp',
        'default'    => '40',
        'sample'     => '500',
        'gettext_id' => 'Maximum number of sendmail processes',
        'file'       => 'sympa.conf',
505
        'gettext_comment' =>
IKEDA Soji's avatar
IKEDA Soji committed
506
            "Maximum number of simultaneous child processes spawned by Sympa. This is the main load control parameter. \nProposed value is quite low, but you can rise it up to 100, 200 or even 300 with powerful systems.",
507
    },
508
509
510
    {   'name'       => 'nrcpt',
        'default'    => '25',
        'gettext_id' => 'Maximum number of recipients per call to sendmail',
IKEDA Soji's avatar
IKEDA Soji committed
511
        'gettext_comment' =>
512
513
            'This grouping factor makes it possible for the sendmail processes to optimize the number of SMTP sessions for message distribution. If needed, you can limit the number of recipients for a particular domain. Check the "nrcpt_by_domain.conf" configuration file.',
        'file' => 'sympa.conf',
514
    },
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
    {   'name'    => 'avg',
        'default' => '10',
        'gettext_id' =>
            'Maximum number of different mail domains per call to sendmail',
        'file' => 'sympa.conf',
    },

    {'gettext_id' => 'Privileges'},

    {   'name'       => 'create_list',
        'default'    => 'public_listmaster',
        'sample'     => 'intranet',
        'gettext_id' => 'Who is able to create lists',
        'vhost'      => '1',
        'file'       => 'sympa.conf',
        'edit'       => '1',
IKEDA Soji's avatar
IKEDA Soji committed
531
        'gettext_comment' =>
532
533
534
535
536
537
538
539
            'Defines who can create lists (or request list creation) by creating new lists or by renaming or copying existing lists.',
        'scenario' => '1',
    },
    {   'name'       => 'allow_subscribe_if_pending',
        'gettext_id' => 'Allow adding subscribers to a list not open',
        'gettext_comment' =>
            'If set to "off", adding subscribers to, or removing subscribers from a list with status other than "open" is forbidden.',
        'default' => 'on',
540
        'vhost'   => '1',
541
    },
542
543
544
545
    {   'name'       => 'global_remind',
        'gettext_id' => 'Who is able to send remind messages over all lists',
        'default'    => 'listmaster',
        'scenario'   => '1',
546
    },
547
548
549
    {   'name'       => 'move_user',
        'default'    => 'auth',
        'gettext_id' => 'Who is able to change user\'s email',
IKEDA Soji's avatar
IKEDA Soji committed
550
551
        'vhost'      => '1',
        'scenario'   => '1',
552
    },
IKEDA Soji's avatar
IKEDA Soji committed
553
554
555
556
557
558
559
    {   'name'       => 'use_blacklist',
        'gettext_id' => 'Use blacklist',
        'default'    => 'send,create_list',
        'vhost'      => '1',
        'file'       => 'sympa.conf',
        'split_char' => ',',
        'edit'       => '1',
560
        'gettext_comment' =>
IKEDA Soji's avatar
IKEDA Soji committed
561
            'List of operations separated by comma for which blacklist filter is applied.  Setting this parameter to "none" will hide the blacklist feature.',
562
    },
563
564
565
566
567
568
569
570
571
    {   'name'       => 'owner_domain',
        'sample'     => 'domain1.tld domain2.tld',
        'gettext_id' => 'List of required domains for list owner addresses',
        'file'       => 'sympa.conf',
        'optional'   => '1',
        'split_char' => ' ',
        'vhost'      => '1',
        'edit'       => '1',
        'gettext_comment' =>
572
            'Restrict list ownership to addresses in the specified domains. This can be used to reserve list ownership to a group of trusted users from a set of domains associated with an organization, while allowing moderators and subscribers from the Internet at large.',
Luc Didry's avatar
Luc Didry committed
573
        'default' => undef,
574
    },
Luc Didry's avatar
Luc Didry committed
575
576
577
578
579
580
581
582
583
    {   'name'   => 'owner_domain_min',
        'sample' => '1',
        'gettext_id' =>
            'Minimum number of owners for each list that must match owner_domain restriction',
        'file'     => 'sympa.conf',
        'default'  => '0',
        'optional' => '1',
        'vhost'    => '1',
        'edit'     => '1',
584
        'gettext_comment' =>
585
            'Minimum number of owners for each list must satisfy the owner_domain restriction. The default of zero (0) means *all* list owners must match. Setting to 1 requires only one list owner to match owner_domain; all other owners can be from any domain. This setting can be used to ensure that there is always at least one known contact point for any mailing list.',
586
    },
587

588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
    {'gettext_id' => 'Default privileges for the lists'},

    # List definition
    {   'name'       => 'visibility',
        'gettext_id' => "Visibility of the list",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'conceal',
    },

    # Sending
    {   'name'       => 'send',
        'gettext_id' => "Who can send messages",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'private',
    },

    # Privileges
    {   'name'       => 'info',
        'gettext_id' => "Who can view list information",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'open',
    },
    {   'name'       => 'subscribe',
        'gettext_id' => "Who can subscribe to the list",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'open',
    },
    {   'name'       => 'add',
        'gettext_id' => "Who can add subscribers",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'owner',
    },
    {   'name'       => 'unsubscribe',
        'gettext_id' => "Who can unsubscribe",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'open',
    },
    {   'name'       => 'del',
        'gettext_id' => "Who can delete subscribers",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'owner',
    },
    {   'name'       => 'invite',
        'gettext_id' => "Who can invite people",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'private',
    },
    {   'name'       => 'remind',
        'gettext_id' => "Who can start a remind process",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'owner',
    },
    {   'name'       => 'review',
        'gettext_id' => "Who can review subscribers",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'owner',
    },

    {   'name'       => 'd_read',
        'gettext_id' => "Who can view",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'private',
    },
    {   'name'       => 'd_edit',
        'gettext_id' => "Who can edit",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'owner',
    },

    # Archives
    {   'name'       => 'archive_web_access',
        'gettext_id' => "access right",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'closed',
    },
    {   'name'       => 'archive_mail_access',
        'gettext_id' => "access right by mail commands",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'closed',
    },

    # Bounces
    {   'name'       => 'tracking',
        'gettext_id' => "who can view message tracking",
        'scenario'   => 1,
        'vhost'      => 1,
        'default'    => 'owner',
    },

691
692
693
694
695
    {'gettext_id' => 'Archives'},

    {   'name'       => 'process_archive',
        'default'    => 'off',
        'gettext_id' => 'Store distributed messages into archive',
IKEDA Soji's avatar
IKEDA Soji committed
696
        'gettext_comment' =>
697
            "If enabled, distributed messages via lists will be archived. Otherwise archiving is disabled.\nNote that even if setting this parameter disabled, past archives will not be removed and will be accessible according to access settings by each list.",
698
699
        'vhost' => '1',
        'file'  => 'sympa.conf',
700
        'edit'  => '1',
701
    },
702
    {   'name'         => 'default_archive_quota',
703
        'gettext_id'   => 'Default disk quota for lists\' archives',
704
705
        'gettext_unit' => 'Kbytes',
        'optional'     => '1',
IKEDA Soji's avatar
IKEDA Soji committed
706
    },
707
708
709

    {   'name'       => 'ignore_x_no_archive_header_feature',
        'gettext_id' => 'Ignore "X-no-archive:" header field',
IKEDA Soji's avatar
IKEDA Soji committed
710
        'gettext_comment' =>
711
            'Sympa\'s default behavior is to skip archiving of incoming messages that have an "X-no-archive:" header field set. This parameter allows one to change this behavior.',
712
713
        'default' => 'off',
        'sample'  => 'on',
714
    },
715
716
717
    {   'name'       => 'custom_archiver',
        'optional'   => '1',
        'gettext_id' => 'Custom archiver',
IKEDA Soji's avatar
IKEDA Soji committed
718
        'gettext_comment' =>
719
720
721
            "Activates a custom archiver to use instead of MHonArc. The value of this parameter is the absolute path to the executable file.\nSympa invokes this file with these two arguments:\n--list\nThe address of the list including domain part.\n--file\nAbsolute path to the message to be archived.",
        'file' => 'wwsympa.conf',
        'edit' => '1',
722
    },
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
    {   'name'            => 'mhonarc',
        'default'         => '/usr/bin/mhonarc',
        'gettext_id'      => 'Path to MHonArc mail-to-HTML converter',
        'file'            => 'wwsympa.conf',
        'edit'            => '1',
        'gettext_comment' => 'This is required for HTML mail archiving.',
        'vhost'           => '1',
    },
##    {
##        'name'     => 'archived_pidfile',
##        'default'  => Sympa::Constants::PIDDIR . '/archived.pid',
##        'gettext_id' => 'File containing archived PID while running',
##        'file'     => 'wwsympa.conf',
##    },

    {'gettext_id' => 'Bounce management and tracking'},

    {   'name'       => 'bounce_warn_rate',
        'default'    => '30',
        'gettext_id' => 'Default bounce warn rate',
IKEDA Soji's avatar
IKEDA Soji committed
743
        'gettext_comment' =>
744
            'The list owner receives a warning whenever a message is distributed and the number (percentage) of bounces exceeds this value.',
745
        'file' => 'sympa.conf',
746
        'edit' => '1',
747
    },
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
    {   'name'       => 'bounce_halt_rate',
        'default'    => '50',
        'gettext_id' => 'Default bounce halt rate',
        'file'       => 'sympa.conf',
        'gettext_comment' =>
            'NOT USED YET. If bounce rate reaches the halt_rate, messages for the list will be halted, i.e. they are retained for subsequent moderation.',
    },
    {   'name'       => 'default_bounce_level1_rate',
        'gettext_id' => 'Default bounce management threshold, 1st level',
        'default'    => '45',
        'vhost'      => '1',
    },
    {   'name'       => 'default_bounce_level2_rate',
        'gettext_id' => 'Default bounce management threshold, 2nd level',
        'default'    => '75',
        'vhost'      => '1',
    },

    {   'name'       => 'verp_rate',
        'gettext_id' => 'Percentage of list members in VERP mode',
        'gettext_comment' =>
            "Uses variable envelope return path (VERP) to detect bouncing subscriber addresses.\n0%: VERP is never used.\n100%: VERP is always in use.\nVERP requires address with extension to be supported by MTA. If tracking is enabled for a list or a message, VERP is applied for 100% of subscribers.",
        'default' => '0%',
        'vhost'   => '1',
    },
    {   'name' => 'tracking_delivery_status_notification',
774
        'gettext_id' =>
775
776
            'Tracking message by delivery status notification (DSN)',
        'default' => 'off',
777
    },
778
779
780
781
782
783
784
    {   'name' => 'tracking_message_disposition_notification',
        'gettext_id' =>
            'Tracking message by message disposition notification (MDN)',
        'default' => 'off',
    },
    {   'name'       => 'tracking_default_retention_period',
        'gettext_id' => 'Max age of tracking information',
IKEDA Soji's avatar
IKEDA Soji committed
785
        'gettext_comment' =>
786
            'Tracking information is removed after this number of days',
787
788
        'gettext_unit' => 'days',
        'default'      => '90',
789
    },
790
791
792
793
    {   'name'       => 'welcome_return_path',
        'default'    => 'owner',
        'gettext_id' => 'Remove bouncing new subscribers',
        'file'       => 'sympa.conf',
IKEDA Soji's avatar
IKEDA Soji committed
794
        'gettext_comment' =>
795
            'If set to unique, the welcome message is sent using a unique return path in order to remove the subscriber immediately in the case of a bounce.',
796
    },
797
798
799
800
    {   'name'       => 'remind_return_path',
        'default'    => 'owner',
        'gettext_id' => 'Remove subscribers bouncing remind message',
        'file'       => 'sympa.conf',
IKEDA Soji's avatar
IKEDA Soji committed
801
        'gettext_comment' =>
802
            'Same as welcome_return_path, but applied to remind messages.',
803
    },
804
805
    {   'name'       => 'default_remind_task',
        'gettext_id' => 'Periodical subscription reminder task',
IKEDA Soji's avatar
IKEDA Soji committed
806
        'gettext_comment' =>
807
808
            'This task regularly sends subscribers a message which reminds them of their list subscriptions.',
        'optional' => '1',
809
    },
810
811
812
813
814
815
816
817
818
819
##    {
##        'name'     => 'bounced_pidfile',
##        'default'  => Sympa::Constants::PIDDIR . '/bounced.pid',
##        'gettext_id' => 'File containing bounced PID while running',
##        'file'     => 'wwsympa.conf',
##    },

    {   'name'       => 'expire_bounce_task',
        'default'    => 'daily',
        'gettext_id' => 'Task for expiration of old bounces',
IKEDA Soji's avatar
IKEDA Soji committed
820
        'gettext_comment' =>
821
822
            'This task resets bouncing information for addresses not bouncing in the last 10 days after the latest message distribution.',
        'file' => 'sympa.conf',
823
        'task' => 'expire_bounce',
824
    },
825
826
    {   'name'       => 'purge_orphan_bounces_task',
        'gettext_id' => 'Task for cleaning invalidated bounces',
IKEDA Soji's avatar
IKEDA Soji committed
827
        'gettext_comment' =>
828
829
            'This task deletes bounce information for unsubscribed users.',
        'default' => 'monthly',
830
        'task'    => 'purge_orphan_bounces',
831
    },
832
833
    {   'name'       => 'eval_bouncers_task',
        'gettext_id' => 'Task for updating bounce scores',
IKEDA Soji's avatar
IKEDA Soji committed
834
        'gettext_comment' =>
835
836
            'This task scans all bouncing users for all lists, and updates "bounce_score_subscriber" field in "subscriber_table" table. The scores may be used for management of bouncers.',
        'default' => 'daily',
837
        'task'    => 'eval_bouncers',
838
    },
839
840
841
842
843
    {   'name'       => 'process_bouncers_task',
        'gettext_id' => 'Task for management of bouncers',
        'gettext_comment' =>
            'This task executes actions on bouncing users configured by each list, according to their scores.',
        'default' => 'weekly',
844
        'task'    => 'process_bouncers',
845
846
847
848
849
850
    },
    {   'name'       => 'purge_tables_task',
        'gettext_id' => 'Task for cleaning tables',
        'gettext_comment' =>
            'This task cleans old tracking information from "notification_table" table.',
        'default' => 'daily',
851
        'task'    => 'purge_tables',
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
    },
    {   'name'       => 'minimum_bouncing_count',
        'gettext_id' => 'Minimum number of bounces',
        'gettext_comment' =>
            'The minimum number of bounces received to update bounce score of a user.',
        'default' => '10',
    },
    {   'name'       => 'minimum_bouncing_period',
        'gettext_id' => 'Minimum bouncing period',
        'gettext_comment' =>
            'The minimum period for which bouncing lasted to update bounce score of a user.',
        'gettext_unit' => 'days',
        'default'      => '10',
    },
    {   'name'       => 'bounce_delay',
        'gettext_id' => 'Delay of bounces',
IKEDA Soji's avatar
IKEDA Soji committed
868
        'gettext_comment' =>
869
870
871
            'Average time for a bounce sent back to mailing list server after a post was sent to a list. Usually bounces are sent back on the same day as the original message.',
        'gettext_unit' => 'days',
        'default'      => '0',
IKEDA Soji's avatar
IKEDA Soji committed
872
    },
873
    {   'name' => 'bounce_email_prefix',
IKEDA Soji's avatar
IKEDA Soji committed
874
        'gettext_comment' =>
875
876
            "The prefix to consist the return-path of probe messages used for bounce management, when variable envelope return path (VERP) is enabled. VERP requires address with extension to be supported by MTA.\nIf you change the default value, you must modify the mail aliases too.",
        'default' => 'bounce',
877
    },
878
879
    {   'name'       => 'return_path_suffix',
        'gettext_id' => 'Suffix of list return address',
IKEDA Soji's avatar
IKEDA Soji committed
880
        'gettext_comment' =>
881
            'The suffix appended to the list name to form the return-path of messages distributed through the list. This address will receive all non-delivery reports (also called bounces).',
882
        'default' => '-owner',
883
    },
884
885
886
887
888
889
890

    # Sympa services: Advanced configuration

    {'gettext_id' => 'Loop prevention'},

    {   'name'       => 'loop_command_max',
        'gettext_id' => 'Maximum number of responses to command message',
IKEDA Soji's avatar
IKEDA Soji committed
891
        'gettext_comment' =>
892
893
            'The maximum number of command reports sent to an email address. Messages are stored in "bad" subdirectory of incoming message spool, and reports are not longer sent.',
        'default' => '200',
894
    },
895
896
    {   'name'       => 'loop_command_sampling_delay',
        'gettext_id' => 'Delay before counting responses to command message',
897
        'gettext_comment' =>
898
899
900
            'This parameter defines the delay in seconds before decrementing the counter of reports sent to an email address.',
        'gettext_unit' => 'seconds',
        'default'      => '3600',
901
    },
902
903
    {   'name'       => 'loop_command_decrease_factor',
        'gettext_id' => 'Decrementing factor of responses to command message',
IKEDA Soji's avatar
IKEDA Soji committed
904
        'gettext_comment' =>
905
906
            'The decrementation factor (from 0 to 1), used to determine the new report counter after expiration of the delay.',
        'default' => '0.5',
907
    },
908
909
    {   'name'       => 'loop_prevention_regex',
        'gettext_id' => 'Regular expression to prevent loop',
910
        'gettext_comment' =>
911
912
913
914
            'If the sender address matches the regular expression, then the message is rejected.',
        'default' =>
            'mailer-daemon|sympa|listserv|majordomo|smartlist|mailman',
        'vhost' => '1',
915
    },
916
917
    {   'name'       => 'msgid_table_cleanup_ttl',
        'gettext_id' => 'Expiration period of message ID table',
IKEDA Soji's avatar
IKEDA Soji committed
918
        'gettext_comment' =>
919
920
921
            'Expiration period of entries in the table maintained by sympa_msg.pl daemon to prevent delivery of duplicate messages caused by loop.',
        'gettext_unit' => 'seconds',
        'default'      => '86400',
922
    },
923
924
    {   'name'       => 'msgid_table_cleanup_frequency',
        'gettext_id' => 'Cleanup interval of message ID table',
925
        'gettext_comment' =>
926
927
928
            'Interval between cleanups of the table maintained by sympa_msg.pl daemon to prevent delivery of duplicate messages caused by loop.',
        'gettext_unit' => 'seconds',
        'default'      => '3600',
929
    },
930

931
    {'gettext_id' => 'Automatic lists'},
932

933
934
    {   'name'       => 'automatic_list_removal',
        'gettext_id' => 'Remove empty automatic list',
IKEDA Soji's avatar
IKEDA Soji committed
935
        'gettext_comment' =>
936
937
938
939
            'If set to "if_empty", then Sympa will remove automatically created mailing lists just after their creation, if they contain no list member.',
        'default' => 'none',       ## Can be 'if_empty'
        'sample'  => 'if_empty',
        'vhost'   => '1',
940
    },
941
942
943
944
    {   'name'       => 'automatic_list_feature',
        'gettext_id' => 'Automatic list',
        'default'    => 'off',
        'vhost'      => '1',
945
    },
946
947
948
949
950
    {   'name'       => 'automatic_list_creation',
        'gettext_id' => 'Who is able to create automatic list',
        'default'    => 'public',
        'vhost'      => '1',
        'scenario'   => '1',
951
    },
952
953
954
955
    {   'name' => 'automatic_list_families',
        'sample' =>
            'name=family_one:prefix=f1:display=My automatic lists:prefix_separator=+:classes separator=-:family_owners_list=alist@domain.tld;name=family_two:prefix=f2:display=My other automatic lists:prefix_separator=+:classes separator=-:family_owners_list=anotherlist@domain.tld;',
        'gettext_id' => 'Definition of automatic list families',
IKEDA Soji's avatar
IKEDA Soji committed
956
        'gettext_comment' =>
957
            "Defines the families the automatic lists are based on. It is a character string structured as follows:\n* each family is separated from the other by a semicolon (;)\n* inside a family definition, each field is separated from the other by a colon (:)\n* each field has the structure: \"<field name>=<field value>\"\nBasically, each time Sympa uses the automatic lists families, the values defined in this parameter will be available in the family object.\n* for scenarios: [family->name]\n* for templates: [% family.name %]",
958
959
960
        'file'     => 'sympa.conf',
        'optional' => '1',
        'vhost'    => '1',
961
    },
962
963
    {   'name'       => 'parsed_family_files',
        'gettext_id' => 'Parsed files for families',
964
        'gettext_comment' =>
965
            'comma-separated list of files that will be parsed by Sympa when instantiating a family (no space allowed in file names)',
IKEDA Soji's avatar
IKEDA Soji committed
966
        'file'       => 'sympa.conf',
967
968
        'split_char' => ',',
        'default' =>
969
            'message_header,message_header.mime,message_footer,message_footer.mime,info',
970
        'vhost' => '1',
971
    },
IKEDA Soji's avatar
IKEDA Soji committed
972
    {   'name'       => 'family_signoff',
973
        'gettext_id' => 'Global unsubscription',
IKEDA Soji's avatar
IKEDA Soji committed
974
975
976
        'default'    => 'auth',                    # Compat. to <=6.2.52
        'scenario'   => 1,
        'vhost'      => '1',
977
    },
978

979
    {'gettext_id' => 'Tag based spam filtering'},
980

981
982
983
984
985
986
987
988
    {   'name'       => 'antispam_feature',
        'gettext_id' => 'Tag based spam filtering',
        'default'    => 'off',
        'vhost'      => '1',
    },
    {   'name'       => 'antispam_tag_header_name',
        'default'    => 'X-Spam-Status',
        'gettext_id' => 'Header field to tag spams',
IKEDA Soji's avatar
IKEDA Soji committed
989
        'gettext_comment' =>
990
            'If a spam filter (like spamassassin or j-chkmail) add a header field to tag spams, name of this header field (example X-Spam-Status)',
991
992
        'vhost' => '1',
        'file'  => 'sympa.conf',
993
        'edit'  => '1',
994
    },
995
996
997
998
999
1000
1001
1002
1003
    {   'name'    => 'antispam_tag_header_spam_regexp',
        'default' => '^\s*Yes',
        'gettext_id' =>
            'Regular expression to check header field to tag spams',
        'gettext_comment' =>
            'Regular expression applied on this header to verify message is a spam (example Yes)',
        'vhost' => '1',
        'file'  => 'sympa.conf',
        'edit'  => '1',
IKEDA Soji's avatar
IKEDA Soji committed
1004
    },
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
    {   'name'       => 'antispam_tag_header_ham_regexp',
        'default'    => '^\s*No',
        'gettext_id' => 'Regular expression to determine spam or ham.',
        'gettext_comment' =>
            'Regular expression applied on this header field to verify message is NOT a spam (example No)',
        'vhost' => '1',
        'file'  => 'sympa.conf',
        'edit'  => '1',
    },
    {   'name'       => 'spam_status',
        'default'    => 'x-spam-status',
        'gettext_id' => 'Name of header field to inform',
        'gettext_comment' =>
1018
            'Messages are supposed to be filtered by an spam filter that adds them one or more headers. This parameter is used to select a special scenario in order to decide the message\'s spam status: ham, spam or unsure. This parameter replaces antispam_tag_header_name, antispam_tag_header_spam_regexp and antispam_tag_header_ham_regexp.',
1019
1020
1021
1022
        'vhost'    => '1',
        'file'     => 'sympa.conf',
        'edit'     => '1',
        'scenario' => '1',
1023
    },
1024

1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
    {'gettext_id' => 'Directories'},

    {   'name'            => 'home',
        'default_s'       => '$EXPLDIR',
        'gettext_id'      => 'List home',
        'gettext_comment' => 'Base directory of list configurations.',
        'file'            => 'sympa.conf',
        'edit'            => '1',
    },
    {   'name'       => 'etc',
        'default_s'  => '$SYSCONFDIR',
        'gettext_id' => 'Directory for configuration files',
        'gettext_comment' =>
            'Base directory of global configuration (except "sympa.conf").',
        'file' => 'sympa.conf',
    },
##    {
##        name    => 'localedir',
##        default => Sympa::Constants::LOCALEDIR,
##        'gettext_id' =>
##        'Directory containing available NLS catalogues (Message internationalization)',
##        file    => 'sympa.conf',
##    },
1048

1049
    {   'name'       => 'spool',
1050
        'default_s'  => '$SPOOLDIR',
IKEDA Soji's avatar
IKEDA Soji committed
1051
        'gettext_id' => 'Base directory of spools',
1052
        'file'       => 'sympa.conf',
IKEDA Soji's avatar
IKEDA Soji committed
1053
1054
        'gettext_comment' =>
            'Base directory of all spools which are created at runtime. This directory must be writable by Sympa user.',
1055
    },
1056
    {   'name'       => 'queue',
1057
        'default_s'  => '$SPOOLDIR/msg',
1058
        'gettext_id' => 'Directory for message incoming spool',