1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
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
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
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
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
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
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
|
# -*- python -*-
# -*- coding: euc-jp -*-
# Copyright (C) 1998-2007 by the Free Software Foundation, Inc.
#
# 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
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
# [訳注] このファイルは, Mailman 2.X 配布物に含まれる
# Mailman/Defaults.py.in (SF.net での CVS リビジョンは 2.135)
# のコメント部分を日本語 (共通語) に翻訳したものです.
# 配布等の条件は原文と同様, GNU 一般公衆利用許諾契約書 (GNU
# General Public License) に従います (上記も参照ください). 内容の正
# 確な理解のためには, 配布物に含まれる原文を参照されることをお勧めし
# ます.
# 訳者: IKEDA Soji <nezumi@poem.co.jp>
"""配布時点の Mailman の重要な設定変数の既定値."""
# サイト固有の設定のためにこのファイルを変更しては*いけない*. かわりに
# そういったことは, かならず mm_cfg.py の指定された範囲に書くこと.
# 詳しくは mm_cfg.py のコメントを見る.
import os
def seconds(s): return s
def minutes(m): return m * 60
def hours(h): return h * 60 * 60
def days(d): return d * 60 * 60 * 24
# 便利な定数 [>=2.1.2]
try:
True, False
except NameError:
True = 1
False = 0
Yes = yes = On = on = True
No = no = Off = off = False
#####
# システム全般の既定値
#####
# 画像のロゴを使うかどうか. 0 に設定すると「我々の後援者」の画像のロゴ
# を無効にし, テキストのリンクを張るだけになる (これはショートカットの
# 「favicon」も無効にする). そうでなければ, ここはロゴ画像の URL のベー
# スパスにしなければいけない (そして, 最後のスラッシュは含めなければい
# けない). Mailman のロゴ入りページフッタまでも無効にしたいと言うのな
# ら, Mailman/htmlformat.py: MailmanLogo() をハックすること. リンクと
# 画像の名前はそこにハードコードしてある.
IMAGE_LOGOS = '/icons/'
# Mailman の favicon の名前
SHORTCUT_ICON = 'mm-icon.png'
# MAILMAN_URL は, ミラーのどれかを指すようにしたいとき以外は変えないこと.
MAILMAN_URL = 'http://www.gnu.org/software/mailman/index.html'
#MAILMAN_URL = 'http://www.list.org/'
#MAILMAN_URL = 'http://mailman.sf.net/'
# Mailman は, (少なくとも) 二つの完全修飾ドメイン名 (FQDN) について知
# る必要がある; 1) あなたの URL に使うホスト名と, 2) あなたのドメイン
# の電子メールアドレスに使うホスト名. たとえば, みんながあなたの
# Mailman システムに"http://www.dom.ain/mailman" でアクセスするのなら,
# あなたの URL に使うFQDN は "www.dom.ain" になる. みんながあなたのシ
# ステムに "yourlist@dom.ain" 宛でメールを送るのなら, あなたの電子メー
# ルの FQDN は "dom.ain" になる. DEFAULT_URL_HOST は前者を制御し,
# DEFAULT_EMAIL_HOST は後者を制御する. Mailman はまた, 一方を他方にマッ
# プするやりかたも知る必要がある (これは特に, 仮想ドメインでの運用で重
# 要). 新しくマップを追加するのには
# "add_virtualhost(URLのFQDN, 電子メールのFQDN)" が使える.
#
# mm_cfg.py で DEFAULT_EMAIL_HOST と DEFAULT_URL_HOST を変更する必
# 要がないのなら, ほかにやることはなし; 既定のマップは自動的に追加される.
# しかし, あなたが mm_cfg.py のほうで変数をどれか変えたのなら, 次のも
# のも書いておくこと:
#
# add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
#
# だってそうしないと, 既定のマッピングが修正されないから.
DEFAULT_EMAIL_HOST = '@MAILHOST@'
DEFAULT_URL_HOST = '@URLHOST@'
DEFAULT_URL_PATTERN = 'http://%s/mailman/'
# DEFAULT_HOST_NAME は DEFAULT_EMAIL_HOST に置き換わった [>=2.1].
# しかし, サイトによっては前のものがまだ mm_cfg.py ファイルに書いてあ
# るかも. そうなら, そっちを信じることになってる. そうでなければ,
# DEFAULT_EMAIL_HOST のほうを信じることになってる. DEFAULT_URL につ
# いても同様.
DEFAULT_HOST_NAME = None
DEFAULT_URL = None
HOME_PAGE = 'index.html'
MAILMAN_SITE_LIST = 'mailman'
# 通常はサイト管理者は, サイトパスワードで Web ページの認証をしたとき,
# リスト管理者として認証するようなクッキーを受け取る. このため, サイト
# 認証クッキーを渡すのはちょっと心配. だって, このクッキーが覗き見られ
# たり捕捉されたりすれば, 侵入者はサイトの全リストへのアクセス権を得る
# ことになる. 一方, サイトの全リストでいちいち認証しなおさなくていい
# のはとっても便利. サイト認証クッキーを認めるのなら, この値を Yes に
# する.
ALLOW_SITE_ADMIN_COOKIES = No
# text/html パートをプレインテキストに変換するコマンド. これは結果を
# 標準出力に出力しなければいけない. %(filename)s には, プログラムが
# 処理する一時ファイルの名前が入る.
HTML_TO_PLAIN_TEXT_COMMAND = '/usr/bin/lynx -dump %(filename)s'
#####
# 仮想ドメイン
#####
# ここで, 仮想ホストのマッピングを設定する. これは主として, Web経由の
# リスト作成に使うので, その影響は現時点ではかなり限られたものだ. 新し
# くマッピングを追加するには add_virtualhost() 呼出しを使う. マップの
# キーは Utils.get_domain() で指定する文字列で, 値は DEFAULT_HOST_NAME
# に当たるもの. [>=2.1]
VIRTUAL_HOSTS = {}
# Yes に設定すると, その計算機の listinfo ページと admin ページでの一
# 覧が, web_page_url 設定オプションのホスト名がアクセスしているページ
# の URL にあるリストだけに--- 「その仮想ホストにあるリストだけに」---
# 限られるようになる. No に設定すると, 一覧にはすべての公表された (つ
# まり公開の) リストが載る.
VIRTUAL_HOST_OVERVIEW = On
# 補助関数; mm_cfg.py ファイルで使える. 省略可能な emailhost 引数を抜
# かすと, urlhost から名前の最初を取り除いたものが設定される, たとえば
#
# add_virtualhost('www.dom.ain')
# VIRTUAL_HOST['www.dom.ain']
# ==> 'dom.ain'
#
def add_virtualhost(urlhost, emailhost=None):
DOT = '.'
if emailhost is None:
emailhost = DOT.join(urlhost.split(DOT)[1:])
VIRTUAL_HOSTS[urlhost.lower()] = emailhost.lower()
# で, ここで既定の設定をしておく.
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
# 注意: すでにあるリストのドメインを変えるには、bin/fix_url.py を実行
# するといいかもしれない. bin/fix_url.py スクリプトは, bin/withlist
# の中で実行する, こんなふうに: bin/withlist -l -r bin/fix_url.py リスト名
#####
# スパム防止の既定値 [>=2.1]
#####
# この変数には, (ヘッダ, 正規表現) の形式の 2 要素のタプルのリストが入
# る. Mailman/Handlers/SpamDetect.py モジュールがこれを使って, 届いた
# メッセージにマッチさせる. 届いたメッセージの指定されたヘッダにマッチ
# したら, そのメッセージはスパムの判定が下る. ヘッダは大文字小文字を区
# 別せず, 後ろのコロンは付けてはいけない. 正規表現はいつも
# re.IGNORECASE でマッチする.
#
# 検索するものが多くなれば, 処理が全体として遅くなることに注意. スパ
# ム検出はリストに来るものだけでなく, -owners アドレスに来るものも含め,
# 明白に承認されたものでなければ, すべてのメッセージに対して働く.
KNOWN_SPAMMERS = []
#####
# Web インタフェースの既定値 [>=2.1]
#####
# Mailman の Web インタフェースで使うほとんど全ての色は, 以下の変数で
# パラメタ化してある. このことで, ソースコードに大手術をしなくても簡単
# に好みの色遣いに変えられるようになっている.
# なお, 一般に, テンプレートでの色はここには入っていない. というのは,
# 既定のテンプレートの色は, サイト全体とか仮想ドメイン全体とかリスト全
# 体で簡単に上書きしてしまえるから.
WEB_BG_COLOR = 'white' # ページの背景
WEB_HEADER_COLOR = '#99ccff' # 大見出し
WEB_SUBHEADER_COLOR = '#fff0d0' # 小見出し
WEB_ADMINITEM_COLOR = '#dddddd' # オプション項目の背景
WEB_ADMINPW_COLOR = '#99cccc' # パスワードテキストボックス
WEB_ERROR_COLOR = 'red' # エラーメッセージの色
WEB_LINK_COLOR = '' # 真なら, LINK= を変える
WEB_ALINK_COLOR = '' # 真なら, ALINK= を変える
WEB_VLINK_COLOR = '' # 真なら, VLINK= を変える
WEB_HIGHLIGHT_COLOR = '#dddddd' # 真なら, listinfo と admin
# の表示で交互に色を変える
#####
# 保存書庫の既定値
#####
# 公開保存書庫の URL のテンプレート. これはいくつかの場所で使う:
# List-Archive: ヘッダ, リストの listinfo ページ, リストの管理ページで.
#
# これは "%(listname)s" がどこかに入った文字列でなければいけな
# い. Mailman はここにリストの名前を代入する. 文字列に "%(hostname)s"
# をいれることもできる. Mailman はここにホスト名 (たいてい
# DEFAULT_URL_HOST) を代入する. [>=2.1]
PUBLIC_ARCHIVE_URL = 'http://%(hostname)s/pipermail/%(listname)s'
# 保存書庫が既定で有効かどうか.
DEFAULT_ARCHIVE = On
# 保存書庫は既定で公開か限定か.
# 0=公開, 1=限定
DEFAULT_ARCHIVE_PRIVATE = 0
# ARCHIVE_TO_MBOX
#-1 - なにも保存しない
# 0 - mbox 形式では保存しないが, Mailman の組込み HTML 保存書庫は作る
# 1 - mbox 形式で保存して, 外部の保存書庫作成機構で使う.
# 2 - mbox 形式で保存して, 組込み HTML 保存書庫も作る --- 外部の保存書
# 庫作成機能と Mailman の組込み HTML 保存書庫の両方を使える.
# フラットなメールファイルは検索や外部保存書庫作成などに便利かも.
ARCHIVE_TO_MBOX = 2
# 0 - 年ごと
# 1 - 月ごと
# 2 - 四半期ごと
# 3 - 週ごと
# 4 - 日ごと
DEFAULT_ARCHIVE_VOLUME_FREQUENCY = 1
DEFAULT_DIGEST_VOLUME_FREQUENCY = 1 # [>=2.1]
# これらの変数は, 外部の保存書庫作成プログラムを制御する. 通常は, 保存
# 書庫作成が有効 (上の ARCHIVE_TO_MBOX と, リストの archive* 属性を参
# 照) なら, 組込みの Pipermail 保存書庫作成プログラムを使う. これは以
# 下の変数がどちらもNo に設定されているときの既定値. 以下のものをどれ
# か設定するのなら, 値はos.popen() に渡せるシェルコマンドの文字列でな
# ければいけない. この文字列には次の置き換え文字列を入れられる:
#
# %(listname)s -- リストの内部名
# %(hostname)s -- リストの電子メールホスト名
#
# 保存されるものはこれを置き換えたものになる. os.popen() を使うことに
# 注意.
#
# これらの変数をどちらか設定するのなら, 両方とも設定しなければいけない
# ことに注意 (両方とも同じ文字列であってもよい). つまり, 外部保存書庫
# 作成プログラムを設定すると, 保存書庫が公開でも限定でも関係なく動く.
PUBLIC_EXTERNAL_ARCHIVER = No
PRIVATE_EXTERNAL_ARCHIVER = No
# マルチパートのメッセージを「フラット」なメッセージ (つまりシングルパー
# トのメッセージ) に変換するフィルタモジュール. これは Pipermail で必
# 要だが, 外部保存書庫作成プログラムを使うのなら 0 に設定するといいか
# も.
# また, 自分で作ったモジュールに置き換えることもできるが, すくなくとも
# process() という関数を含んでいて, この関数が MailList オブジェクトと
# Message オブジェクトを引数にとるようになっていないといけない. これは
# メッセージを捨てるときは Errors.DiscardMessage を raise しないといけ
# ない. 捨てないときは, Message オブジェクトを必要に応じて修正しないと
# いけない. [>=2.1]
ARCHIVE_SCRUBBER = 'Mailman.Handlers.Scrubber'
# Mailman.Handlers.Scrubber で, filename パラメタで示される添付ファイ
# ル名をそのまま使うか, それともかわりに 'attachement-xxx' を使うかを
# 制御するパラメタ [>= 2.1.6]. PC や Mac のアプリケーションがかなり長
# い非ASCII のファイル名を使うようになってきたので, 既定値は True とし
# ている. 歴史的には, 2.1.6 では後方互換性のために False となっていた
# のだが, 2.1.7 ではより安全な運用のために True に変わった.
SCRUBBER_DONT_USE_ATTACHMENT_FILENAME = True
# 添付のファイル名の拡張子をそのまま使うのは, ウィルスが拡張子を偽装し
# ていると危険かもしれない. ファイル名の拡張子で添付をフィルタするなら,
# ここを True に設定できる [>=2.1.6]
SCRUBBER_USE_ATTACHMENT_FILENAME_EXTENSION = False
# この変数は, text/html のサブパートで何をするかを定義する. 完全に取り
# 除くか, エスケープするか, 外部プログラムでフィルタするか. 指定できる
# 値は:
# 0 - text/html パートを完全に取り除き, メッセージに削除した旨の注意書
# きを残す. 一番外側のパートが text/html だったら, メッセージ全体
# を破棄する.
# 1 - 含まれている text/html パートを削除し, HTMLエスケープしたデータ
# の添付として別に見られるようにする. 一番外側の text/html パート
# は単にHTMLエスケープするだけ.
# 2 - インラインのまま残すが, HTMLエスケープする.
# 3 - text/html を添付とみなして削除するが, HTMLエスケープしない.
# 注意: これはとても危険. これは本質的には, だれでもあなたのサイト
# に, 邪悪なJavaScript とか, Web バグとか, その他なにかいやらしい
# ものを含んだ HTML メールを送れることになるし, 保存書庫を見る人に
# も影響がある, ということだから. リストへの投稿に対して強力なモデ
# レーションをかけているようなときだけ, このオプションを考えること.
#
# 注意: 現在の保存書庫作成のコードによれば, text/html のパートをインラ
# インにしておいてエスケープしないようにするのは不可能. 場合によっては
# 不便なこともあるかもね.
#
# 値は文字列でもよい. その場合, HTML ページを通すフィルタコマンドの名
# 前になる. 結果の出力は添付に入るか, 一番外側のパートが text/html の
# ときはメッセージ全体になる. 文字列の形式には "%(filename)s" を含めら
# れ, これはプログラムが処理する一時ファイルの名前になる. 処理されたメッ
# セージは標準出力に書き出さなければいけない. HTML からプレインテキス
# トへの変換プログラムを指定したければ, ここを
# HTML_TO_PLAIN_TEXT_COMMAND に設定する. [>=2.1]
ARCHIVE_HTML_SANITIZER = 1
# ダウンロードできる保存書庫の .txt ファイルを gzip 圧縮するなら Yes
# に設定する. これは*極めて*不十分なものであることに注意. 代わりに, メッ
# セージをただ .txt ファイルにまとめておいて, 毎晩 cron ジョブを走らせ
# てtxt.gz ファイルをつくることもできる. 詳細は cron/nightly_gzip 参照.
GZIP_ARCHIVE_TXT_FILES = No
# ここで保存書庫について既定の「日付訂正」方針を設定する. メッセージが
# 保存書庫に入るときに Pipermail をつかっていても, 外部の保存書庫作成
# プログラムをつかっていても, Mailman は Date: ヘッダを, そのヘッダの
# もとの内容ではなく, メッセージが届いた日付に修正できる. これは, とん
# でもない日付のメッセージが届いてしまったような場合に有用.
# ここを 0 に設定すると, 日付はもとのメッセージのとおりにする. 1 にす
# ると, かならず日付を訂正する. 2 に設定すると, 「賢い書き換え」が働
# く; 日付がARCHIVER_ALLOWABLE_SANE_DATE_SKEW より外れていると (進
# んでいても遅れていても), かわりに届いた日付で置き換える. [>=2.1]
ARCHIVER_CLOBBER_DATE_POLICY = 2
ARCHIVER_ALLOWABLE_SANE_DATE_SKEW = days(15)
# Pipermail の保存書庫は, 投稿者の電子メールアドレスをそのまま記録して
# いる. これは, スパム発信用アドレス収集者にとっては金鉱のようなもの
# だ, と考えるひともいるだろう. ここを Yes に設定すると, 電子メールア
# ドレスを適度にぼやかすことができる. が, これは保存書庫の中に現れる
# mailto: URL も壊してしまうことに注意.
ARCHIVER_OBSCURES_EMAILADDRS = Yes
# Pipermail は, メッセージボディは US-ASCII テキストを含むと仮定する.
# 保存書庫のための既定のキャラクタセットに使う他のキャラクタセットを定
# 義するならここのオプションを変える. 「キャラクタセット」という用語は
# MIME での意味で, オクテットの列を文字の列に変換する方法のことを指す.
# 既定のキャラクタセットを変えたら, 下の VERBATIM_ENCODING にそれを追
# 加したほうがいいかも.
DEFAULT_CHARSET = None
# 多くのキャラクタセットの符号化では, クォートしないといけない特殊な
# HTML実体定義文字がある. そうしないと, Pipermail の保存書庫が正しく表
# 示できない. ところが, キャラクタセットによっては, ブラウザで正しく表
# 示するにはこういった文字をクォートしてはいけないものがある.
# 主な問題は, マルチバイトの符号化でオクテット 0x26 が必ずしも & 文字
# を表さないものがある, というやつだ. ここの変数は, そういうキャラクタ
# セットで保存書庫で HTML クォートしないもののリストを入れる.
# [訳注] この変数は既定値として iso-2022-jp が定義してあるが, 上の説明
# のような問題が起こるキャラクタセット --- Mailman では現在, 日本
# 語の iso-2022-jp のみ --- では, 保存書庫は EUC などの符号化法を使
# うことにすればいいので, この変数が設定してあってもしてなくても, あま
# り意味がない.
VERBATIM_ENCODING = ['iso-2022-jp']
# 保存書庫が公開のとき, Mailman が生の Unix mbox ファイルも公開にして
# しまうか. [>=2.1.4]
PUBLIC_MBOX = No
#####
# 配送の既定値
#####
# [訳注]
# MTA と Mailman を統合するための設定については, 『GNU Mailman -
# インストールマニュアル』 (日訳は http://mm.tkikuchi.net/mailman-install/
# にある) の「メールサーバの設定」の章も参照.
# 出ていくメールの最終的な配送モジュール. このハンドラは, リストへ, あ
# るいは個々のユーザへの SMTP サーバを通じてのメッセージ配送に使う. こ
# の値は Mailman.Handlers パッケージの中のモジュールの名前の文字列でな
# いといけない.
#
# 警告: Sendmail モジュールはセキュリティホールがあるので避けること.
# というか, これを使おうというのならその前に,
# Mailman/Handlers/Sendmail.py ファイルを読まなければいけない.
#
#DELIVERY_MODULE = 'Sendmail'
DELIVERY_MODULE = 'SMTPDirect'
# MTA は, Mailman/MTA にあるモジュールの名前でなければならない. これは
# リストの作成と削除のための MTA 独自の機能を提供する. [>=2.1;
# MTA_ALIASES_STYLE は廃止]
# Exim のようないくつかのMTA は, 自動的に新しいリストを認識するように
# 設定でき, その場合は MTA 変数は None に設定しなければならない.
# 新しいエイリアスを標準出力に出す(またはサイトリスト管理者へ電子メー
# ルで送る) ようにして /etc/aliases スタイルのファイルを手作業でいじる
# ようにするときは 'Manual' にする.
# Postfix MTA を使っているのなら 'Postfix' にする --- ただしそのときは,
# POSTFIX_STYLE_VIRTUAL_DOMAINS も見ること.
MTA = 'Manual'
# MTA='Postfix' に設定したのなら, Postfix で仮想ドメインを使っているか
# どうか, どんなスタイルの仮想ドメインを使っているかによって, つぎの変
# 数も設定してほしい. [>=2.1]
# Postfix で仮想ドメインを使っていないか, または Sendmail スタイルの仮
# 想ドメイン (すべてのアドレスがすべての仮想ドメインから見える) を使っ
# ているのなら, このフラグを偽に設定する.
# Postfix スタイルの仮想ドメイン (エイリアスがそれぞれの仮想ドメインの
# 中だけに現れる) を使っているのなら, この変数を host_name の値のリス
# トに設定して, 仮想のエントリを分離する. つまり, dom1.ain, dom2.ain,
# dom3.ain を運用しているが dom2 と dom3 だけが仮想なら, この変数をリ
# スト ['dom2.ain', 'dom3.ain'] に設定する. これはメーリングリストの
# host_name 属性にマッチさせられる. 詳細は README.POSTFIX を見る[訳注:
# README.POSTFIX の内容は, 2.1.6 以降は上記『インストールマニュアル』
# に移された].
POSTFIX_STYLE_VIRTUAL_DOMAINS = []
# これらの変数は, それぞれ aliases.db および virtual-mailman.db を,
# 関連するプレインテキストファイルから再構築するのに使うプログラムを示す.
# 更新されるファイルの名前が (区切りの空白をはさんで) この文字列に付け
# 加わるので, これは os.system() に渡せるものでなければならな
# い. [>=2.1]
POSTFIX_ALIAS_CMD = '/usr/sbin/postalias'
POSTFIX_MAP_CMD = '/usr/sbin/postmap'
# 一回の SMTP トランザクションで指定できる宛先の数の上限.
# 0 に設定すると, 一トランザクションで全ての宛先を指定する.
# DELIVERY_MODULE が SMTPDirect のときだけ使う.
SMTP_MAX_RCPTS = 500
# ひとつのソケットコネクションで実行する SMTP セッションの数の上限.
# MTA によっては制限がある. 0 に設定すると, 好きなだけたくさん実行する
# (つまり MTA に制限がないとき). 0 より大きいなんらかの数に設定すると,
# Mailman はセッションがこの数に達したら SMTP コネクションを閉じてから
# 開き直す. [>=2.1]
SMTP_MAX_SESSIONS_PER_CONNECTION = 0
# SMTP 配送で同時に使うサブスレッドの最大数. 宛先が SMTP_MAX_RCPTS に
# 従ってカタマリに分けられた後, それぞれのカタマリはそういったスレッド
# によってsmtpd に渡される. Python インタプリタがスレッド対応でビルド
# されていなければ, この仕様は無効になる. MAX_DELIVERY_THREADS を 0 に
# 設定すれば, あらゆる場合にこの仕様を明示的に無効にできる. この仕様は
# DELIVERY_MODULE が SMTPDirect のときだけ対応している.
#
# 注意: これは実験的な仕様で, 限られたテストによれば, Python の大域イ
# ンタプリタロックにより, 実際には効率を落すかもしれない. 使うときは気
# をつける.
MAX_DELIVERY_THREADS = 0
# DELIVERY_MODULE が 'SMTPDirect' のときの, SMTP のホストとポート.
# ホストが存在していて解決できることを確かめる (つまり, これが初期値の
# "localhost" であるなら, /etc/hosts ファイルに localhost のエントリ
# があることを確かめる, ということだ).
SMTPHOST = 'localhost'
SMTPPORT = 0 # smtplib の初期値を使う
# コマンドラインのパイプを使って sendmail 互換のプログラムで配送すると
# きのコマンド. DELIVERY_MODULE が 'Sendmail' のとき設定.
SENDMAIL_CMD = '/usr/lib/sendmail'
# ニューズグループへの投稿や閲覧に NNTP サーバでの認証が要るなら, これ
# らの変数を設定する. 認証が必要ないなら, 両方の変数に None を指定する.
NNTP_USERNAME = None
NNTP_PASSWORD = None
# NNTP ゲートウェイのあるリストで一番使いたい NNTP サーバがあるなら,
# これを設定する.
DEFAULT_NNTP_HOST = ''
# これらの変数は, NNTP サーバに受け入れられるためにヘッダを削る方法を
# 制御する. [>=2.1] INN のようないくつかのサーバは, 禁止されるヘッダや,
# 重複するヘッダのあるメッセージをリジェクトする. NNTP サーバは他の理
# 由でもメッセージをリジェクトするかもしれないが, そういったことをプロ
# グラム的に解決できる見込みはあまりない. Mailman/Queue/NewsRunner.py
# を見ること.
#
# 最初に, これらのヘッダ (大文字小文字の違いは無視する) は, 元のメッセー
# ジから削除する.
NNTP_REMOVE_HEADERS = ['nntp-posting-host', 'nntp-posting-date', 'x-trace',
'x-complaints-to', 'xref', 'date-received', 'posted',
'posting-version', 'relay-version', 'received']
# 次に, これらのヘッダは, 元のメッセージで重複していなければ, そのまま
# 残す. 2 度めかそれ以降に現れるヘッダは 2 番目の名前のヘッダに書き換
# える (大文字小文字の区別は保存する).
NNTP_REWRITE_DUPLICATE_HEADERS = [
('to', 'X-Original-To'),
('cc', 'X-Original-Cc'),
('content-transfer-encoding', 'X-Original-Content-Transfer-Encoding'),
('mime-version', 'X-MIME-Version'),
]
# リスト全員に送るようなすべての「普通の」メッセージは, このハンドラモ
# ジュールのパイプラインを通る. それぞれのリスト自身では, `pipeline'
# 属性を定義すればグローバルなパイプラインを上書きできる. [>=2.1] [訳
# 注: 2.1.6 から Scrubber モジュールが追加された.]
GLOBAL_PIPELINE = [
# まずは, すべての配送過程で共通の処理をするモジュール.
'SpamDetect',
'Approve',
'Replybot',
'Moderate',
'Hold',
'MimeDel',
'Scrubber',
'Emergency',
'Tagger',
'CalcRecips',
'AvoidDuplicates',
'Cleanse',
'CookHeaders',
# それから, メッセージをまとめ読み用の mbox ファイル, 保存書庫,
# ニューズのキューに送る. それぞれの runner が, それぞれの配送過程
# に応じたその後のメッセージの処理をする.
'ToDigest',
'ToArchive',
'ToUsenet',
# それから, 会員向け配送 (送出) 特有の若干の追加処理をして,
# 最後に, メッセージを送出キューへ放つ.
'AfterDelivery',
'Acknowledge',
'ToOutgoing',
]
# これは, -owner アドレスに送られてきたメッセージが通るパイプライン.
OWNER_PIPELINE = [
'SpamDetect',
'Replybot',
'OwnerRecips',
'ToOutgoing',
]
# これは SMTPDirect 配送モジュール (上の DELIVERY_MODULE を参照) のた
# めの書式化文字列を定義する [>=2.1]. 有効な %()s 文字列置換にはつぎの
# ものがある:
#
# time -- メッセージを Mailman から smtpd に完全に渡すのに要した
# 浮動小数点数の秒数.
#
# size -- メッセージの全サイズのバイト数.
#
# #recips -- このメッセージの実際の宛先数.
#
# #refused -- SMTP で拒否された宛先数 (SMTP_LOG_REFUSED の中でだけ使う).
#
# listname -- この投稿のメーリングリストの `内部的な' 名前.
#
# msg_<ヘッダ> -- 配送されたメッセージの与えられたヘッダの値.
# メッセージにそのようなヘッダがなければ, "n/a" を使う. ただし,
# メッセージにそのようなヘッダが複数あれば, そのうちのどれをつかうかは
# 未定義であることに注意.
#
# allmsg_<ヘッダ> - 上の msg_<ヘッダ> とおなじだが, そのようなヘッダ
# がメッセージに複数あれば, カンマと空白で区切ってすべて出力する.
#
# sender -- メッセージの "送信者". これは下の USE_ENVELOPE_SENDER
# 変数での指定によって From: かエンヴェロープ送信者かになる.
#
# 各項目は 2 要素のタプルの形式で, 最初の要素がメッセージを出力する
# logs/ の中のファイルの名前で, 次が Python の %スタイルの文字列置き換
# えである書式文字列になっている. ファイル名は任意; qfiles/<名前> は,
# もしなければ自動的に作成される.
# 配送が成功かそうでないかにかかわらず, メッセージ配送ごとに出力するメッ
# セージの書式. このログメッセージの出力を無効にするには None を設定す
# る. [訳注: 2.1.6 から, リスト名 %(listname)s を含めることができる
# ようになった.]
SMTP_LOG_EVERY_MESSAGE = (
'smtp',
'%(msg_message-id)s smtp to %(listname)s for %(#recips)d recips, completed in %(time).3f seconds')
# これは, SMTP が即座には失敗しないときだけ出力する.
# SMTP_LOG_REFUSED とは相互に排他的.
SMTP_LOG_SUCCESS = (
'post',
'post to %(listname)s from %(sender)s, size=%(size)d, message-id=%(msg_message-id)s, success')
# これは, いずれかのアドレスで即座に SMTP の失敗が発生したときだけ出力する.
# SMTP_LOG_SUCCESS とは相互に排他的.
SMTP_LOG_REFUSED = (
'post',
'post to %(listname)s from %(sender)s, size=%(size)d, message-id=%(msg_message-id)s, %(#refused)d failures')
# これはそれぞれの特定の宛先に関する失敗でログを残す. 追加の %()s キー:
#
# recipient -- 失敗した宛先のアドレス
# failcode -- SMTP 失敗コード
# failmsg -- 実際の SMTP メッセージ (あれば)
SMTP_LOG_EACH_FAILURE = (
'smtp-failure',
'delivery to %(recipient)s failed with code %(failcode)d: %(failmsg)s')
# これらの変数は, より良い配送エラー検知のための VERP 風配送の書式と頻
# 度を制御する [>=2.1]. VERP とは, 以下で定義されている可変エンヴェロー
# プ返送経路情報のこと:
#
# http://cr.yp.to/proto/verp.txt
#
# これは, 宛先のアドレスを我々 (Mailman) がエンヴェロープ送信者アドレ
# ス (つまり SMTP の `MAIL FROM:' アドレス) から知るための符号化を伴う.
# そのため, 宛先でどんな種類の転送がされても, 配送エラーがあったときは,
# 我々は曖昧さのない配送エラーアドレスの知らせを受け取れる.
#
# しかしながら, これは技術的には VERP「風」でしかない, なぜならエンヴェ
# ロープ送信者のエンコードを Mailman でやっていて, MTA でやっているの
# ではないから. MTA との連係が要るので, MTA が拡張アドレスを理解できる
# ように設定できるかどうか, 確かめておくこと.
#
# 最初の変数は, VERP エンヴェロープのエンコードのしかたを表す. これは
# 次の3 つの文字列置き換えを含む:
#
# %(bounces)s -- リスト-bounces メールボックス名をここにセットする
# %(mailbox)s -- 宛先のメールボックス名をここにセットする
# %(host)s -- 宛先のホスト名をここにセットする
#
# ここでの例は, 下の初期設定を使う.
#
# FQDN でのリストアドレスは: mylist@dom.ain
# 宛先は: aperson@a.nother.dom
#
# エンヴェロープ送信者は mylist-bounces+aperson=a.nother.dom@dom.ain
# となる
#
# MTA が, /必ず/ こういったアドレスを mylist-bounces に配送するように
# 設定するよう注意!
VERP_FORMAT = '%(bounces)s+%(mailbox)s=%(host)s'
# 次の変数は, こういったアドレスを曖昧さなくデコードするための正規表現
# を表す. 配送エラーを発生させた MTA は, このアドレスを配送エラーメッ
# セージのTo: ヘッダに入れる. これを正しく取得することは重要 --- そし
# て巧妙だ. 使っている Python の正規表現をよく調べること. これはちょ
# うど 3 つの名前つきグループを定義しなければならない: bounces,
# mailbox, host で, 定義は上の変数と同じ. これは大文字小文字の違いを無
# 視してコンパイルされる.
VERP_REGEXP = r'^(?P<bounces>[^+]+?)\+(?P<mailbox>[^=]+)=(?P<host>[^@]+)@.*$'
# メッセージを認識するための VERP 書式 [>=2.1.5]
VERP_PROBE_FORMAT = '%(bounces)s+%(token)s'
VERP_PROBE_REGEXP = r'^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$'
# ここを Yes にすると, 配送エラーでの配送停止で VERP 検出を有効にする
# [>=2.1.6]
VERP_PROBES = No
# VERP を使うのにもっともよい機会は, パスワード通知のときだ. それはす
# でに宛先ごとに個別化されている. ここで Yes を設定すると, パスワード
# 通知で必ず VERP を使うようになる.
VERP_PASSWORD_REMINDERS = No
# ほかによい機会としては, まとめ読みでない通常の配送が個別化されている
# ときがある. ここでも, 個別の宛先ごとにアドレスを生成することが負荷増
# 大になるかもしれない. ここで Yes を設定すると, まとめ読みでない通常
# の配送が個別化されていると VERP を使う (まとめ読みの配送の個別化は未
# 対応).
VERP_PERSONALIZED_DELIVERIES = No
# そして最後に, 通常の個別化されていない配送も VERP にできる. しかしな
# がら, これは著しい負荷増大があるかもしれないので, 通常配送での VERP
# の頻度を決められるようにしてある. これはメッセージの数で, VERP 宛先
# アドレスを使う間隔を決める. 同じ変数が, 通常とまとめ読みの両方の配送
# を制御する. 0 に設定すると, まったく VERP にしない. 1 に設定すると,
# すべての配送でVERP にする. 1 より大きい数にすると, 時々 VERP するだ
# けにする.
VERP_DELIVERY_INTERVAL = 0
# より良い確認メッセージのために, VERP 風の書式を使う. これは確認文字
# 列を返信用アドレスにエンコードしてある. これでメッセージの Subject:
# をよりユーザに親切なものにできるが, MTA との連係が要る. 書式は上の
# VERP_FORMAT と同様だが, つぎの置き換えを使う:
#
# %(addr)s -- リスト-confirm メールボックス名がここに入る
# %(cookie)s -- 確認文字列がここに入る
VERP_CONFIRM_FORMAT = '%(addr)s+%(cookie)s'
# これは VERP_REGEXP と同様, ただし VERP_CONFIRM_FORMAT での分割用.
VERP_CONFIRM_REGEXP = r'^(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$'
# これを Yes に設定すると, VERP 風 (よりユーザに親切) な確認メッセージを使う.
VERP_CONFIRMATIONS = No
# あるアドレスに送られる, -request アドレス宛てメッセージや投稿保留メッ
# セージによる自動応答の数の最大数. この制限は, Mailman と誤設定のある
# 電子メールロボットとの間での応答ループを防ぐ. Mailman はもともと,
# "Precendence: bulk|list|junk" ヘッダのついたメッセージには自動応答を
# しないようになっている. ここの設定は, いざというときの安全のための値
# なので, それなりに高く設定する. 0 に設定すると制限なし (たぶんデバッ
# グのときだけ便利).
MAX_AUTORESPONSES_PER_DAY = 10
#####
# Qrunner の既定値 [>=2.1]
#####
# qrunner のマスタ監視プロセスが, どんなキューを起動するか. これは,
# qrunner クラスの名前 (これは Mailman.Queue パッケージの中で同じ名前
# のモジュールとして存在していなければならない) と, それぞれのqrunner
# のために fork する並行プロセスの数との, 2 要素のタプルのリストになる.
# 1 個より多くのプロセスを使うと, それぞれがハッシュ空間の互いに等しい
# 部分を取る.
# BAW: そのうち重み付けのあるハッシュ空間に対応するかも
# BAW: 強制ではないが, スライスの数は 2 の累乗であるべき
QRUNNERS = [
('ArchRunner', 1), # 保存書庫作成に行くメッセージ
('BounceRunner', 1), # qfile/bounces ディレクトリの処理のため
('CommandRunner', 1), # 外界から来るコマンドと配送エラー
('IncomingRunner', 1), # 外界から来る投稿
('NewsRunner', 1), # nntpd へ送り出すメッセージ
('OutgoingRunner', 1), # smtpd へ送り出すメッセージ
('VirginRunner', 1), # 内部的に作り出した (できたての) メッセージ
('RetryRunner', 1), # 一時的に失敗した配送の再試行 [>=2.1.4]
]
# ここを Yes に設定すると, `Maildir` 配送オプションを使う. これを変え
# たら, リスト自動検出を使わない MTA のためには bin/genaliases を再実
# 行する必要がある.
#
# 警告: Maildir 配送を使いたいなら, Mailman の qrunner を /必ず/ root
# で開始しなければならない. そうしないとパーミッションの問題が出る.
#
# 注意: Maildir 配送は Mailman 2.1 では実験的.
USE_MAILDIR = No
# 注意: USE_MAILDIR = Yes に設定するのなら, mm_cfg.py ファイルに次の行
# を加える (もちろん, コメント記号は外す!)
# QRUNNERS.append(('MaildirRunner', 1))
# qrunner のスライスですべてのファイルを処理した後, またキューのディレ
# クトリに新しいファイルがあるか調べるまでに, どのくらいの間 runner を
# sleep させるか. これは秒未満にもできる. また, ゼロにすればすぐ調べる
# (essentially busy-loop as fast as possible) ようになる.
QRUNNER_SLEEP_TIME = seconds(1)
# (email パッケージで) 解析できないようなメッセージを受け取ったときに,
# それをどうするか. 解析できないメッセージになる原因としてもっともよく
# あるのは, MIME カプセル化が壊れているもので, そうなる原因としてもっ
# ともよくあるのは, それが Nimda のようなコンピュータウィルスによるも
# のであるときだ. この変数を No に設定すると, そういったメッセージは捨
# てる. Yes にすると, qfiles/bad サブディレクトリに保管する.
QRUNNER_SAVE_BAD_MESSAGES = Yes
# このフラグは, Mailman がデータファイルに書き込んで flush した後でそ
# のデータファイルを fsync() するようにする. これはディスクへのデータ
# の書き込みを確実にし, データを失うことを防ぐが, 性能を犠牲にする.
# このフラグは, メッセージのピクルと MailList の config.pck ファイル
# の両方に影響することに注意. [>=2.1.4]
SYNC_AFTER_WRITE = No
#####
# 一般的な既定値
#####
# このサーバの標準言語. リストの文脈やユーザの文脈がわからないときはい
# つでも, 代わりにこの言語を使う. 設定できる値は下の LC_DESCRIPTIONS
# を見る. [>=2.1]
DEFAULT_SERVER_LANGUAGE = 'en'
# 会員のみがメーリングリストに投稿できるようにするとき, メッセージの送
# 信者をどのように決めるか. この変数を Yes に設定すると, まずメッセー
# ジのエンヴェロープ送信者を使い, エンヴェロープ送信者がなければ代わり
# に送信者を使う. これを No に設定すると, いつも送信者を使う.
#
# エンヴェロープ送信者は SMTP 配送が設定するから, 送信者よりはごまかす
# のが難しい. 送信者は From: ヘッダに入れるもので, エンドユーザが簡単
# にごまかせる. しかしながら, エンヴェロープ送信者は, ときには正しく
# 設定されていないことがあって, リスト会員から送られてきているのに投稿
# が承認のために保留になってしまうことがある. このような問題が起こるの
# なら, この変数は No に設定するが, ごまかしメッセージを通してしまうこ
# とがあるのを理解しておくこと.
USE_ENVELOPE_SENDER = No
# 投稿の目的で会員かどうか調べるには, 普通はいくつかのヘッダのうちでど
# れかの値がリスト会員と一致するかを調べる.
# ヘッダはこの変数に挙げた順に調べる. None という値は From_ (エンヴェ
# ロープ送信者) を使うという意味. フィールド名は大文字小文字を区別しな
# い. [>=2.1]
SENDER_HEADERS = ('from', None, 'reply-to', 'sender')
# admin CGI で, 退会やオプション変更のために一度に表示する会員の数.
DEFAULT_ADMIN_MEMBER_CHUNKSIZE = 30
# admindb の Web ページで保留されている投稿の何バイトを表示するか. サ
# イズにかかわらず全メッセージを指定するには負の数を使う (ただしそのペー
# ジを表示するのに時間がかかるかも).
ADMINDB_PAGE_TEXT_LIMIT = 4096
# この変数を Yes に設定すると, リスト管理者は自分のメーリングリストを
# 削除できるようになる. リスト管理者にそんな力を与えたくない場合は, か
# わりにこの変数を No に設定すると, リスト削除はサイト管理者がコマンド
# 行スクリプトbin/rmlist でしなければならなくなる. [>=2.1]
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = No
# この変数を Yes に設定すると, リスト管理者が自分のメーリングリストに
# 「個別化」フラグを設定できるようになる. このフラグを有効にすると,
# Mailman は, MTA への配送をまとめて行うかわりにユーザごとに別々の電子
# メールメッセージを送るようになる. このことにより, 会員ごとにより個別
# 化したメッセージが出せるが, システムの効率に重大な影響を与えるかもし
# れない. [>=2.1]
OWNERS_CAN_ENABLE_PERSONALIZATION = No
# 保留するメッセージを Python のピクルで保存するか, プレインテキストで
# 保存するか. 前者は毎回解析/生成を行わなくてよいので効率がいいが, 後
# 者はもしも保留メッセージをディスク上で変更したいのならよいかもしれな
# い. [>=2.1]
HOLD_MESSAGES_AS_PICKLES = Yes
# [訳注] METADATA_FORMAT [>=2.1 && <=2.1.4] は廃止された。
# この変数は, admin CGI ページに現れるリストごとの設定分類の順序を制御
# する. [>=2.1]
ADMIN_CATEGORIES = [
# 1 列め
'general', 'passwords', 'language', 'members', 'nondigest', 'digest',
# 2 列め
'privacy', 'bounce', 'archive', 'gateway', 'autoreply',
'contentfilter', 'topics',
]
# 下の「ユーザオプションのビットフィールド」を参照; ここはそれらのオプ
# ションの合計にする. リストのすべての新規会員はそれらのオプションを設
# 定される. 我々は, 既定値ではみんな投稿の写しを受け取りたがらないと仮
# 定している. しかし, 会員の投稿制限フラグの最初の値はリストの設定変数
# default_member_moderation で制御されることに注意. [>=2.1]
DEFAULT_NEW_MEMBER_OPTIONS = 256
# Mailman が自分でパスワードを生成するとき (ユーザが入会申請のときに自
# 分でパスワードを入力しなかった場合や, リスト作成の際に管理者パスワー
# ドの自動生成を選択したときにそうなる) に使うパスワードの種類の指定.
# [>=2.1.6]
#
# この値を Yes にすると, Mailman 古来の, ユーザに(より)親切なパスワー
# ドにする. 唱えやすそうなパスワードができるので, 覚えるのが楽.
# この値を No にすると, 暗号論的により強度の高い (しかし, より覚えにく
# い) パスワードを使うようにする -- オペレーティング システムと Python
# が必要な仕様 (特に, /dev/urandom が利用できることが必要) に対応して
# いるのなら.
USER_FRIENDLY_PASSWORDS = Yes
# この値で, 会員とリスト管理者のパスワードの既定の [訳注: つまり, パス
# ワードが自動生成されるときの] 長さを指定する. [>=2.1.6; これらの値は,
# 以前はハードコードされていた]
MEMBER_PASSWORD_LENGTH = 8
ADMIN_PASSWORD_LENGTH = 10
#####
# リストの既定値. 注意: これらの変数を変えても, すでにあるリストの設定は
# *変わらない*. ここでは, 今後作成する新しいリストの既定値を定義するだけ.
#####
# リストは, 既定で公表するかどうか. 明示される宛先で許される数の最大は
# 既定でいくつか. 既定で許されるメッセージサイズの最大はいくつか.
DEFAULT_LIST_ADVERTISED = Yes
DEFAULT_MAX_NUM_RECIPIENTS = 10
DEFAULT_MAX_MESSAGE_SIZE = 40 # キロバイト
# これらの書式文字列は, メーリングリストのインスタンスの辞書を使って展
# 開される.
# [訳注]
# 2.1.6 以降, DEFAULT_SUBJECT_PREFIX に %d を含めると通し番号が
# 入るようになった. %04d といった書式も使える.
# mm_cfg.py で設定するときは %%d のように書かなければならないことに
# 注意.
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s] "
# DEFAULT_SUBJECT_PREFIX = "[%(real_name)s %%d]" # 通し番号をつける場合
DEFAULT_MSG_HEADER = ""
DEFAULT_MSG_FOOTER = """_______________________________________________
%(real_name)s mailing list
%(real_name)s@%(host_name)s
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
"""
# 「Re:」のつくメッセージで, 件名の前置きをどこにつけるか [>=2.1.6]:
#
# 旧スタイル: Re: [前置き] テスト
# 新スタイル: [前置き 123] Re: テスト ... (通し番号はオプション)
#
# 後方互換性のために, 旧スタイルを既定値とする. ただし, リスト管理者が
# 前置きに %d (通し番号) を入れたとき [訳注: 上記参照] は, 強制的に新
# スタイルにする. サイト管理者が以前に新スタイル化パッチ (SourceForge
# のパッチ置場にある) を当てていたのなら, この値を mm_cfg.py で No
# に設定するとよいかもしれない.
OLD_STYLE_PREFIXING = Yes
# 通常配送で添付削除する [>=2.1.6]
DEFAULT_SCRUB_NONDIGEST = False
# 電子メールコマンド処理では, 指示された行数より後の電子メールコマンド
# を無視する.
DEFAULT_MAIL_COMMANDS_MAX_LINES = 25
# 管理要求を, 毎日の保留要求通知のほかに, 即座にメールで管理者に知らせ
# るか.
DEFAULT_ADMIN_IMMED_NOTIFY = Yes
# 管理者に入会/退会を知らせるか.
DEFAULT_ADMIN_NOTIFY_MCHANGES = No
# この日数の後, 保留されているメッセージを破棄する [>=2.1.6] [訳注: 0 にすると破棄しない]
DEFAULT_MAX_DAYS_TO_HOLD = 0
# リスト会員の投稿は, 既定で司会つきにするか. [>=2.1;
# DEFAULT_MODERATED は廃止]
DEFAULT_DEFAULT_MEMBER_MODERATION = No
# 自動的に破棄した非会員の投稿を司会者に転送もするか. [>=2.1]
DEFAULT_FORWARD_AUTO_DISCARDS = Yes
# 特定の非会員の動作に一致しなかった非会員の投稿をどうするか. [>=2.1]
# 0 = 承認
# 1 = 保留
# 2 = 拒否
# 3 = 破棄
DEFAULT_GENERIC_NONMEMBER_ACTION = 1
# 'To:', 'Cc:', 'Resent-To:' のどのフィールドにもリスト名がはいってい
# なければエラーとするか. これはスパム対策になる
DEFAULT_REQUIRE_EXPLICIT_DESTINATION = Yes
# リスト名のほかに承認できる名前.
DEFAULT_ACCEPTABLE_ALIASES ="""
"""
# ほかのメーリングリストだけを会員とするメーリングリスト (親子リスト)
# にするか:
DEFAULT_UMBRELLA_LIST = No
# 親子リストの場合, 管理通知 (入会の確認やパスワード通知) を送るアドレ
# スのメールボックス部につける接尾語:
DEFAULT_UMBRELLA_MEMBER_ADMIN_SUFFIX = "-owner"
# この変数は, 毎月のパスワード通知を送るかどうかを制御する.
DEFAULT_SEND_REMINDERS = Yes
# 新会員に歓迎メッセージを送るか.
DEFAULT_SEND_WELCOME_MSG = Yes
# 退会した会員にお別れメッセージを送るか. [>=2.1]
DEFAULT_SEND_GOODBYE_MSG = Yes
# 送信者情報を消して, リスト-admin アドレスから送っているように見せる
DEFAULT_ANONYMOUS_LIST = No
# {ヘッダ名: 正規表現} スパムフィルタ - 例をいくつか書いておく.
DEFAULT_BOUNCE_MATCHING_HEADERS = """
# '#' で*始まる*行は注釈.
to: friend@public.com
message-id: relay.comanche.denmark.eu
from: list@listme.com
from: .*@uplinkpro.com
"""
# Mailman は, 通過するメッセージの Reply-To: ヘッダを「書き換える」よ
# うに設定できる. 状況によっては, Reply-To: の書き換えをしないもっとも
# な理由がある. 別の状況では, この仕様が本当に必要になる. Web インタ
# フェースの reply_goes_to_list のヘルプで, この問題についての議論へ
# のリンクを見てほしい.
# 0 - Reply-To: を書き換えない
# 1 - Reply-To: をリストに向ける
# 2 - Reply-To: を特定のアドレス (reply_to_address) に設定する
DEFAULT_REPLY_GOES_TO_LIST = 0
# Mailman は, Reply-To: ヘッダがあればすべて取ってしまうようにも, 単に
# 存在する Reply-To: に上記の設定に基づいて追加するようにも設定できる.
# [>=2.1]
DEFAULT_FIRST_STRIP_REPLY_TO = No
# 入会の方針
# 0 - 開放リスト (ALLOW_OPEN_SUBSCRIBE が 1 に設定してあるときだけ) **
# 1 - 入会に確認が要る
# 2 - 入会に管理者の承認が要る
# 3 - 確認と管理者の承認の両方が要る
#
# ** 入会を開放 (次の変数) にしたくないなら, 0 にはしないようにしてほしい.
DEFAULT_SUBSCRIBE_POLICY = 1
# 当サイトでは, まったくチェックなしに入会できるようにするか.
ALLOW_OPEN_SUBSCRIBE = No
# 退会の既定の方針. 0 (承認なしの退会) を強くお勧めする! [>=2.1]
# 0 - 承認なしで退会できる
# 1 - 退会に承認が要る
DEFAULT_UNSUBSCRIBE_POLICY = 0
# 会員名簿の非公開 == 0: だれでも見れる, 1: 会員のみ, 2: 管理者のみ.
# [訳注: 2.1 以降は既定値が 0 から 1 に変更された.]
DEFAULT_PRIVATE_ROSTER = 1
# 会員を見せるときに, 電子メールアドレスだとわからないようにして, Web
# スパイダがスパムに利用するためにアドレスを収集できなくするか.
DEFAULT_OBSCURE_ADDRESSES = Yes
# RFC 2369 では, メーリングリスト会員を通じて送られるメッセージすべて
# に付加する List-* ヘッダを定義している. これはエンドユーザにはとても
# 役に立つので, いつも付加したい. しかしながら, すべての MUA がこのヘッ
# ダに適合しているわけではなく, あるリストでリスト会員にそういうユーザ
# がおおぜいいると, その人たちがこのヘッダを隠してほしいと騒ぎ立てるか
# もしれない.
# この変数を No に設定することで, リスト管理者はこのヘッダを隠すオプショ
# ンを使えなくなる (それでも, 一部のヘッダを隠すことはできる. つまり,
# お知らせ専用リストや保存書庫のないリストにすると, 関係するヘッダは隠
# れる). [>=2.1]
ALLOW_RFC2369_OVERRIDES = Yes
# メーリングリストでの内容フィルタの既定値. DEFAULT_FILTER_CONTENT を
# 真に設定すると, 内容フィルタが有効になる. [>=2.1]
DEFAULT_FILTER_CONTENT = No
# DEFAULT_FILTER_MIME_TYPES は, 削除する MIME 型のリスト. これは
# "maintype/subtype" あるいは単に "maintype" の形式の文字列のリストに
# する. たとえば, "text/html" はすべての HTML の添付を取り去るし,
# "image" はすべてのイメージ型の添付をサブタイプ (jpeg, gif, など) に
# 関わらず取り去る. [>=2.1]
DEFAULT_FILTER_MIME_TYPES = []
# DEFAULT_PASS_MIME_TYPES は, 通す MIME 型のリスト.
# 形式は DEFAULT_FILTER_MIME_TYPES とおなじ. [>=2.1]
DEFAULT_PASS_MIME_TYPES = ['multipart/mixed',
'multipart/alternative',
'text/plain']
# DEFAULT_FILTER_FILENAME_EXTENSIONS は, 削除するファイル名の拡張子の
# リスト. これは役に立つ. なぜなら, いろんなウィルスが, content-type
# ヘッダを偽装して安全なファイルに見せかけながら実行可能な拡張子をつけ
# るようにしていて, 被害者がそれを「開く」と実行されてしまうことをねらっ
# ているので. [>=2.1.6]
DEFAULT_FILTER_FILENAME_EXTENSIONS = [
'exe', 'bat', 'cmd', 'com', 'pif', 'scr', 'vbs', 'cpl'
]
# DEFAULT_PASS_FILENAME_EXTENSIONS は, 通すファイル名の拡張子のリスト.
# 形式は DEFAULT_FILTER_FILENAME_EXTENSIONS とおなじ. [>=2.1.6]
DEFAULT_PASS_FILENAME_EXTENSIONS = []
# multipart/alternative を, そのうちの最初のパートで置き換える. [>= 2.1.7]
DEFAULT_COLLAPSE_ALTERNATIVES = Yes
# 内容フィルタを通したあとで, text/html を text/plain に変換するかどうか.
# 変換は HTML_TO_PLAIN_TEXT_COMMAND を使って行う. [>=2.1]
DEFAULT_CONVERT_HTML_TO_PLAINTEXT = Yes
# フィルタした結果内容がなくなってしまったメッセージに対してとる既定の動作.
# [>=2.1]
# 0 = 破棄, 1 = 拒否, 2 = 転送, 3 = 保留
DEFAULT_FILTER_ACTION = 0
# リスト管理者が内容フィルタしたメッセージをディスクの特別なキューに保
# 管できるようにするか. [>=2.1]
OWNERS_CAN_PRESERVE_FILTERED_MESSAGES = Yes
# リストに送られるメッセージの管理コマンドチェックをするか.
DEFAULT_ADMINISTRIVIA = Yes
#####
# まとめ読みの既定値. リストの既定値と同じ注意がここにもあてはまる.
#####
# リストをまとめ読みなしにできるか.
DEFAULT_NONDIGESTABLE = Yes
# リストをまとめ読み付きにできるか.
DEFAULT_DIGESTABLE = Yes
DEFAULT_DIGEST_HEADER = ""
DEFAULT_DIGEST_FOOTER = DEFAULT_MSG_FOOTER
DEFAULT_DIGEST_IS_DEFAULT = No
DEFAULT_MIME_IS_DEFAULT_DIGEST = No
DEFAULT_DIGEST_SIZE_THRESHHOLD = 30 # キロバイト
DEFAULT_DIGEST_SEND_PERIODIC = Yes
# RFC 1153 (平文) と MIME の両方のまとめ読みで保持するヘッダ. [>=2.1.1]
# RFC 1153 はまた, 以下のヘッダをこのとおりの順序で指定しているので,
# 順序はだいじ.
MIME_DIGEST_KEEP_HEADERS = [
'Date', 'From', 'To', 'Cc', 'Subject', 'Message-ID', 'Keywords',
# つぎのヘッダも保持したほうがいいとおもう
'In-Reply-To', 'References', 'Content-Type', 'MIME-Version',
'Content-Transfer-Encoding', 'Precedence', 'Reply-To',
# Mailman 2.0 [とそれ以降] ではつぎのヘッダを付加する
'Message',
]
PLAIN_DIGEST_KEEP_HEADERS = [
'Message', 'Date', 'From',
'Subject', 'To', 'Cc',
'Message-ID', 'Keywords',
'Content-Type',
]
#####
# 配送エラー処理の既定値. リストの既定値と同じ注意がここにもあてはまる.
#####
# 全部配送エラー処理をするか.
DEFAULT_BOUNCE_PROCESSING = Yes
# 配送エラーを検出してキューに入れてあるものを, bounce runner が
# どのくらいの頻度で処理するか. [>=2.1.5]
REGISTER_BOUNCES_EVERY = minutes(15)
# 配送エラー処理はつぎのように働く: ある会員から配送エラーが届くと, そ
# の会員の「配送エラー情報」を探す. 配送エラー情報がなければ, その会員
# からの配送エラーは初めてだ, ということになる. この場合, その日の日付
# を記録し, 配送エラー得点を初期化する (初期値については下記を見る).
#
# その会員の配送エラー情報がすでにあるのなら, 以前に配送エラーが届いた
# 日付を調べる. この日付がその日とくらべて「配送エラー忘却期間」よりも
# へだたっているのなら, 古いデータはすべて捨てて, その会員からの初めて
# の配送エラーであるかのように, 配送エラー得点を初期化する.
#
# そうでなければ, 配送エラー得点を増やす. 配送エラーが弱か強か (つまり
# 一時的エラーか致命的エラーか) を決定できるなら, 弱な配送エラーには
# 0.5 点, 強な配送エラーには 1.0 点をつかう. 日に一件の配送エラーにだ
# け得点を付けることに注意. そして, 配送エラー得点が「最大エラー点」を
# 超えれば, その会員のアドレスへの配送を停止する.
#
# そのアドレスへの配送を停止した後に, その会員へ警告メッセージを送るこ
# ともできる. これには確認文字列や確認用の URL が書いてあって, それを
# 使って配送を再開できる. また設定した期間が経った後に, そのアドレスを
# 削除することもできる. 配送エラーのためにアドレスを削除したときは,
# その会員に最後のメッセージを送る.
# 配送エラー得点がこの値より大きければ配送を停止する. [>=2.1]
DEFAULT_BOUNCE_SCORE_THRESHOLD = 5.0
# この期間よりも前の配送エラー情報は期限切れとみなし, 捨てる. [>=2.1;
# DEFAULT_MINIMUM_REMOVAL_DATE は廃止]
DEFAULT_BOUNCE_INFO_STALE_AFTER = days(7)
# 配送停止や削除された会員に, リストから削除する前に通知を送る回数.
# 0 にすると, そのアドレスをすぐに (最後の通知を送って) 削除する. 最初
# のものは配送停止になってから送ることに注意. [>=2.1;
# DEFAULT_MINIMUM_POST_COUNT_BEFORE_BOUNCE_ACTION は廃止]
DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS = 3
# 配送停止の警告を送る間隔. [>=2.1]
DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVAL = days(7)
# 管理者は, -bounces (および -admin) アドレス宛てのメッセージで配送エ
# ラー検出にひっかからなかったものを受け取るか. [>=2.1]
DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER = Yes
# 配送エラーに対する動作の通知. 最初のものは, 会員が配送エラーのために
# 配送停止になったときにリスト管理者に知らせるかどうかを指定し, 次のも
# のは会員が配送エラーのために削除されたときに管理者に知らせるかどうか
# を指定する. [>=2.1; DEFAULT_AUTOMATIC_BOUNCE_ACTION は廃止]
DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLE = Yes
DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL = Yes
#####
# 一般的な時間制限
#####
# 保留データベースから入会要求を破棄するまでの期間の既定値.
PENDING_REQUEST_LIFE = days(3)
# 配送に失敗したメッセージの再送をどれだけの間くりかえすか. この時間が
# たった後, 失敗した配送先はキューから除かれ, その配送先はメッセージを
# 受け取ることはない.
DELIVERY_RETRY_PERIOD = days(5)
# 一時的な配送の失敗に対して, 再送までどれだけの間待つか. [>=2.1.2 && <=2.1.3]
DELIVERY_RETRY_WAIT = hours(1)
#####
# ロック管理の既定値
#####
# これらの変数は, ロックの獲得と保持の若干の側面を制御する. これらは
# あなたの環境にふさわしく調整しなければならない. 変数はすべて浮動小数
# 点数の秒単位で指定する. *これらの変数は, リストのサイズ, ハードウェ
# アやネットワークやメール処理機能などの性能にあわせて調整しなければな
# らないかもしれない*.
# これを On に設定すると, MailList オブジェクトのロックのデバッグメッ
# セージを有効にする. このメッセージは logs/locks に書き込む. ロックに
# 問題があると考えるとき, または単にロックを自分のシステムにあわせて調
# 整したいときは, ロックのデバッグを有効にする.
LIST_LOCK_DEBUGGING = Off
# この変数は, メーリングリストの特定の操作について, どれだけの間ロック
# を保持するかを指定する. logs/lock ファイルを監視して, ロック破損がた
# くさんみつかるなら, この値を増やさないといけないだろう. しかしながら
# これをあまりに大きく設定すると, 欠陥のあるスクリプト (または
# bin/withlist の誤った使いかた) によって, リストがロックの寿命をすぎ
# るまで利用不能になることがある. これはおそらく, このシステムで最も重
# 要な調整用変数のひとつだ.
LIST_LOCK_LIFETIME = hours(5)
# この変数は, 外界から来るメッセージを受け取る qrunner プロセスがリス
# トのロック獲得をどれだけの間試みるかを指定する. ロック獲得が時間切れ
# になると, メッセージは再びキューに戻されてつぎの配送を待つ.
LIST_LOCK_TIMEOUT = seconds(10)
# これを On に設定すると, 保留要求データベースのためのロックのデバッグ
# メッセージを有効にする. このメッセージは logs/locks に書き込む. ロッ
# クに問題があると考えるとき, または単にロックを自分のシステムにあわせ
# て調整したいときは, ロックのデバッグを有効にする. [>=2.1.2]
PENDINGDB_LOCK_DEBUGGING = Off
# [訳注] PENDINGDB_LOCK_TIMEOUT [>=2.1.2 && <=2.1.4] と
# PENDINGDB_LOCK_ATTEMPTS [>=2.1.2 && <=2.1.4] は廃止。
#####
# ここから後にはユーザが設定できるものはない. これらの変数の多くは, シ
# ステム内部の事情でこのファイルに書いてある. これらのどれも, 変えたり
# mm_cfg.py ファイルで上書きしたりしてはいけない!
#####
# つぎのディレクトリは, インストールしてある Mailman の重要なファイル
# を見付けるのに使う. PREFIX と EXEC_PREFIX は configure が設定するも
# ので, Mailman パッケージのインストールしてあるディレクトリを指してい
# なければいけない.
PYTHON = '@PYTHON@'
PREFIX = '@prefix@'
EXEC_PREFIX = '@exec_prefix@'
VAR_PREFIX = '@VAR_PREFIX@'
# autoconf 2.12 のバグへの対策
if EXEC_PREFIX == '${prefix}':
EXEC_PREFIX = PREFIX
# CGI の拡張子. 変えるのなら configure スクリプトを使うこと
CGIEXT = '@CGIEXT@'
# インストールしてある Mailman を所有するグループのグループID [>=2.1;
# MAILMAN_UID, MAILMAN_GID は廃止]
MAILMAN_USER = '@MAILMAN_USER@'
MAILMAN_GROUP = '@MAILMAN_GROUP@'
# Mailman の CGI での部品の型の列挙
Toggle = 1
Radio = 2
String = 3
Text = 4
Email = 5
EmailList = 6
Host = 7
Number = 8
FileUpload = 9
Select = 10 # [>=2.1]
Topics = 11 # [>=2.1]
Checkbox = 12 # [>=2.1]
# 「拡張電子メールリスト」. 内容が電子メールアドレスか, ^ が先頭につく
# 正規表現. 送信者制限のテキストボックスで使う. [>=2.1]
EmailListEx = 13
# 拡張スパムフィルタ [>=2.1.4]
HeaderFilter = 14
# 処置
DEFER = 0
APPROVE = 1
REJECT = 2
DISCARD = 3
SUBSCRIBE = 4
UNSUBSCRIBE = 5 # [>=2.1]
ACCEPT = 6 # [>=2.1]
HOLD = 7 # [>=2.1]
# 標準のテキスト項目の幅
TEXTFIELDWIDTH = 40
# ユーザのオプションのビットフィールド. すべての新規リストの既定値を設定
# するには上の DEFAULT_NEW_MEMBER_OPTIONS を見る.
Digests = 0 # ほかの方法で扱うので, フラグはいらない.
DisableDelivery = 1 # 旧式 [>=2.1]; set/getDeliveryStatus() を使うこと.
DontReceiveOwnPosts = 2 # 通常配信の会員のみ
AcknowledgePosts = 4
DisableMime = 8 # まとめ送りの会員のみ
ConcealSubscription = 16
SuppressPasswordReminder = 32
ReceiveNonmatchingTopics = 64
Moderate = 128
DontReceiveDuplicates = 256
# 短縮形のオプション名とフラグの対応 [>=2.1]
OPTINFO = {'hide' : ConcealSubscription,
'nomail' : DisableDelivery,
'ack' : AcknowledgePosts,
'notmetoo': DontReceiveOwnPosts,
'digest' : 0,
'plain' : DisableMime,
'nodupes' : DontReceiveDuplicates
}
# 認証の種類 [>=2.1]
#
# Mailman ではつぎの役割を定義している:
# - ユーザ. 自分の個人オプション設定を変える以外はなんの権限もない普通
# のユーザ
# - リスト作成者. リストの作成と削除ができるが, (必ずしも) リストの設
# 定はできないひと.
# - リスト司会者. 入会申請や保留メッセージのような, 保留申請を扱えるひと
# - リスト管理者. リストのすべてを制御でき, リストの設定もでき, リスト
# 会員のユーザオプションを変更でき, 会員を入退会させられ, といったひと.
# - サイト管理者. サイト全体を全般的に制御でき, 以上に述べたようなすべて
# の作業ができるひと. この人物は普通, コマンドラインツールも操作できる.
UnAuthorized = 0
AuthUser = 1 # ユーザの誰かさん
AuthCreator = 2 # リスト創造者/抹殺者
AuthListAdmin = 3 # リスト管理者 (あるリスト全体を制御)
AuthListModerator = 4 # リスト司会者 (保留申請だけ扱える)
AuthSiteAdmin = 5 # サイト管理者 (すべてを制御できる)
# 役に立つディレクトリ名
LIST_DATA_DIR = os.path.join(VAR_PREFIX, 'lists')
LOG_DIR = os.path.join(VAR_PREFIX, 'logs')
LOCK_DIR = os.path.join(VAR_PREFIX, 'locks')
DATA_DIR = os.path.join(VAR_PREFIX, 'data')
SPAM_DIR = os.path.join(VAR_PREFIX, 'spam')
WRAPPER_DIR = os.path.join(EXEC_PREFIX, 'mail')
BIN_DIR = os.path.join(PREFIX, 'bin')
SCRIPTS_DIR = os.path.join(PREFIX, 'scripts')
TEMPLATE_DIR = os.path.join(PREFIX, 'templates')
MESSAGES_DIR = os.path.join(PREFIX, 'messages')
PUBLIC_ARCHIVE_FILE_DIR = os.path.join(VAR_PREFIX, 'archives', 'public')
PRIVATE_ARCHIVE_FILE_DIR = os.path.join(VAR_PREFIX, 'archives', 'private')
# Qrunner サブシステムが使うディレクトリ
QUEUE_DIR = os.path.join(VAR_PREFIX, 'qfiles')
INQUEUE_DIR = os.path.join(QUEUE_DIR, 'in')
OUTQUEUE_DIR = os.path.join(QUEUE_DIR, 'out')
CMDQUEUE_DIR = os.path.join(QUEUE_DIR, 'commands')
BOUNCEQUEUE_DIR = os.path.join(QUEUE_DIR, 'bounces')
NEWSQUEUE_DIR = os.path.join(QUEUE_DIR, 'news')
ARCHQUEUE_DIR = os.path.join(QUEUE_DIR, 'archive')
SHUNTQUEUE_DIR = os.path.join(QUEUE_DIR, 'shunt')
VIRGINQUEUE_DIR = os.path.join(QUEUE_DIR, 'virgin')
BADQUEUE_DIR = os.path.join(QUEUE_DIR, 'bad')
RETRYQUEUE_DIR = os.path.join(QUEUE_DIR, 'retry') # [>=2.1.4]
MAILDIR_DIR = os.path.join(QUEUE_DIR, 'maildir')
# その他役に立つファイル名
PIDFILE = os.path.join(DATA_DIR, 'master-qrunner.pid')
SITE_PW_FILE = os.path.join(DATA_DIR, 'adm.pw')
LISTCREATOR_PW_FILE = os.path.join(DATA_DIR, 'creator.pw')
# バージョン番号関係をインポート
from Version import *
# Vgg: 言語の説明とキャラクタセットの辞書 [>=2.1]. なにかあたらしい言
# 語に対応したらここに項目を付け加えなければいけない. キーは地域化した
# テキストの入っているディレクトリ名. 値は タプルで, 1 つめの要素が言
# 語の説明で, これはカタログで使う. 2 つめの要素は言語のキャラクタセッ
# ト. このコードは私の GNU/Linux の /usr/share/locale からみつけて
# きた :-) [訳注: その後も言語が追加されている.]
# TK: 配布ターボールにある言語をサイト管理者が選んでインストールできる
# ようにした [>= 2.2 alpha1] [訳注: 米国英語 (en) は必ずインストールさ
# れる]. mm_cfg.py の表記で後方互換性を取るために, add_language() 関
# 数は変えていない. 配布物にない独自の言語を追加するときは, ソースファ
# イルのディレクトリに言語のファイルを入れて '--with-languages' オプ
# ションで configure しただけではだめで, mm_cfg.py でも [訳注:
# add_language() 関数を使って] 言語を追加しなければいけない.
#
# [訳注]
# 自分のサイトで「中国語」を使えるようにしている(いた)のなら注意:
#
# o 言語のコード, 説明, キャラクタセットが, 順次つぎのように変更され
# た:
# [<=2.1.3]
# add_language('big5', _('Traditional Chinese'), 'big5')
# add_language('gb', _('Simplified Chinese'), 'gb2312')
# [2.1.4, 2.1.5]
# add_language('zh_CN', _('Chinese (China)'), 'gb2312')
# add_language('zh_TW', _('Chinese (Taiwan)'), 'big5')
# [>=2.1.6]
# add_language('zh_CN', _('Chinese (China)'), 'utf-8')
# add_language('zh_TW', _('Chinese (Taiwan)'), 'utf-8')
#
# o 2.1.6 より, 地域化テキストとカタログのメンテナンス (2.0 時点で止
# まっていた) が再開された. ただし zh_TW についてはカタログのみで,
# 地域化テキストのメンテナンスは未着手.
#
def _(s):
return s
LANGUAGES = 'en ' + '@LANGUAGES@'
LANGUAGE_DICT = {
'ca': (_('Catalan'), 'iso-8859-1'),
'cs': (_('Czech'), 'iso-8859-2'),
'da': (_('Danish'), 'iso-8859-1'),
'de': (_('German'), 'iso-8859-1'),
'en': (_('English (USA)'), 'us-ascii'),
'es': (_('Spanish (Spain)'), 'iso-8859-1'),
'et': (_('Estonian'), 'iso-8859-15'),
'eu': (_('Euskara'), 'iso-8859-15'), # バスク語
'fi': (_('Finnish'), 'iso-8859-1'),
'fr': (_('French'), 'iso-8859-1'),
'hr': (_('Croatian'), 'iso-8859-2'),
'hu': (_('Hungarian'), 'iso-8859-2'),
'ia': (_('Interlingua'), 'iso-8859-15'),
'it': (_('Italian'), 'iso-8859-1'),
'ja': (_('Japanese'), 'euc-jp'),
'ko': (_('Korean'), 'euc-kr'),
'lt': (_('Lithuanian'), 'iso-8859-13'),
'nl': (_('Dutch'), 'iso-8859-1'),
'no': (_('Norwegian'), 'iso-8859-1'),
'pl': (_('Polish'), 'iso-8859-2'),
'pt': (_('Portuguese'), 'iso-8859-1'),
'pt_BR':(_('Portuguese (Brazil)'), 'iso-8859-1'),
'ro': (_('Romanian'), 'iso-8859-2'),
'ru': (_('Russian'), 'koi8-r'),
'sr': (_('Serbian'), 'utf-8'),
'sl': (_('Slovenian'), 'iso-8859-2'),
'sv': (_('Swedish'), 'iso-8859-1'),
'tr': (_('Turkish'), 'iso-8859-9'),
'uk': (_('Ukrainian'), 'utf-8'),
'zh_CN':(_('Chinese (China)'), 'utf-8'),
'zh_TW':(_('Chinese (Taiwan)'), 'utf-8'),
}
LC_DESCRIPTIONS = {}
def add_language(code, description, charset):
LC_DESCRIPTIONS[code] = (description, charset)
for lang in LANGUAGES.split():
if lang in LANGUAGE_DICT.keys():
add_language(lang, LANGUAGE_DICT[lang][0], LANGUAGE_DICT[lang][1])
del _
|