diff options
-rw-r--r-- | Mailman/Cgi/admin.py | 4 | ||||
-rw-r--r-- | Mailman/Cgi/admindb.py | 4 | ||||
-rw-r--r-- | Mailman/Cgi/edithtml.py | 4 | ||||
-rw-r--r-- | Mailman/Cgi/options.py | 5 | ||||
-rwxr-xr-x | Mailman/Cgi/private.py | 5 | ||||
-rw-r--r-- | Mailman/Cgi/roster.py | 4 | ||||
-rw-r--r-- | Mailman/Utils.py | 3 | ||||
-rw-r--r-- | NEWS | 9 | ||||
-rw-r--r-- | messages/ja/LC_MESSAGES/mailman.po | 4 | ||||
-rwxr-xr-x | messages/ja/doc/Defaults.py.in | 17 |
10 files changed, 44 insertions, 15 deletions
diff --git a/Mailman/Cgi/admin.py b/Mailman/Cgi/admin.py index 2a86298a..174cf34f 100644 --- a/Mailman/Cgi/admin.py +++ b/Mailman/Cgi/admin.py @@ -123,7 +123,9 @@ def main(): os.environ.get('HTTP_X_FORWARDED_FOR', os.environ.get('REMOTE_ADDR', 'unidentified origin'))) - syslog('security', 'Authorization failed (admin): list=%s: remote=%s', listname, remote) + syslog('security', + 'Authorization failed (admin): list=%s: remote=%s', + listname, remote) else: msg = '' Auth.loginpage(mlist, 'admin', msg=msg) diff --git a/Mailman/Cgi/admindb.py b/Mailman/Cgi/admindb.py index 58afb46a..010d8aae 100644 --- a/Mailman/Cgi/admindb.py +++ b/Mailman/Cgi/admindb.py @@ -163,7 +163,9 @@ def main(): os.environ.get('HTTP_X_FORWARDED_FOR', os.environ.get('REMOTE_ADDR', 'unidentified origin'))) - syslog('security', 'Authorization failed (admindb): list=%s: domain=%s', listname, remote) + syslog('security', + 'Authorization failed (admindb): list=%s: remote=%s', + listname, remote) else: msg = '' Auth.loginpage(mlist, 'admindb', msg=msg) diff --git a/Mailman/Cgi/edithtml.py b/Mailman/Cgi/edithtml.py index 69421688..8bf1652a 100644 --- a/Mailman/Cgi/edithtml.py +++ b/Mailman/Cgi/edithtml.py @@ -130,7 +130,9 @@ def main(): os.environ.get('HTTP_X_FORWARDED_FOR', os.environ.get('REMOTE_ADDR', 'unidentified origin'))) - syslog('security', 'Authorization failed (edithtml): list=%s: remote=%s', listname, remote) + syslog('security', + 'Authorization failed (edithtml): list=%s: remote=%s', + listname, remote) else: msg = '' Auth.loginpage(mlist, 'admin', msg=msg) diff --git a/Mailman/Cgi/options.py b/Mailman/Cgi/options.py index e947ff60..4f128baf 100644 --- a/Mailman/Cgi/options.py +++ b/Mailman/Cgi/options.py @@ -292,8 +292,9 @@ def main(): os.environ.get('HTTP_X_FORWARDED_FOR', os.environ.get('REMOTE_ADDR', 'unidentified origin'))) - syslog('security', 'Authorization failed (private): user=%s - list=%s remote=%s', user, listname, remote) + syslog('security', + 'Authorization failed (private): user=%s: list=%s: remote=%s', + user, listname, remote) # So as not to allow membership leakage, prompt for the email # address and the password here. if mlist.private_roster <> 0: diff --git a/Mailman/Cgi/private.py b/Mailman/Cgi/private.py index cb954d3c..131c5de8 100755 --- a/Mailman/Cgi/private.py +++ b/Mailman/Cgi/private.py @@ -146,8 +146,9 @@ def main(): os.environ.get('HTTP_X_FORWARDED_FOR', os.environ.get('REMOTE_ADDR', 'unidentified origin'))) - syslog('security', 'Authorization failed (private): user=%s list=%s - remote=%s', username, listname, remote) + syslog('security', + 'Authorization failed (private): user=%s: list=%s: remote=%s', + username, listname, remote) # give an HTTP 401 for authentication failure print 'Status: 401 Unauthorized' # Are we processing a password reminder from the login screen? diff --git a/Mailman/Cgi/roster.py b/Mailman/Cgi/roster.py index 88391997..02286c09 100644 --- a/Mailman/Cgi/roster.py +++ b/Mailman/Cgi/roster.py @@ -122,7 +122,9 @@ def main(): os.environ.get('HTTP_X_FORWARDED_FOR', os.environ.get('REMOTE_ADDR', 'unidentified origin'))) - syslog('security', 'Authorization failed (roster): list=%s: remote=%s', listname, remote) + syslog('security', + 'Authorization failed (roster): list=%s: remote=%s', + listname, remote) return # The document and its language diff --git a/Mailman/Utils.py b/Mailman/Utils.py index b38776f8..9a3b4a8c 100644 --- a/Mailman/Utils.py +++ b/Mailman/Utils.py @@ -115,7 +115,8 @@ def list_exists(listname): os.environ.get('HTTP_X_FORWARDED_FOR', os.environ.get('REMOTE_ADDR', 'unidentified origin'))) - syslog('mischief', 'Hostile listname: listname=%s remote=%s', listname, remote) + syslog('mischief', + 'Hostile listname: listname=%s: remote=%s', listname, remote) return False basepath = Site.get_listpath(listname) for ext in ('.pck', '.pck.last', '.db', '.db.last'): @@ -30,6 +30,15 @@ Here is a history of user visible changes to Mailman. py2-ipaddress module is installed. The module can be installed via pip if not included in your Python. + - Thanks to Jim Popovitch, Mailman has a new 'security' log and logs + authentication failures to the various web CGI functions. The logged + data include the remote IP and can be used to automate blocking of IPs + with something like fail2ban. Since Mailman 2.1.14, these have returned + an http 401 status and the information should be logged by the web + server, but this new log makes that more convenient. Also, the + 'mischief' log entries for 'hostile listname' noe include the remote IP + if available. + i18n - The Japanese translation has been updated by Yasuhito FUTATSUKI. diff --git a/messages/ja/LC_MESSAGES/mailman.po b/messages/ja/LC_MESSAGES/mailman.po index cfb32021..ba7b1675 100644 --- a/messages/ja/LC_MESSAGES/mailman.po +++ b/messages/ja/LC_MESSAGES/mailman.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mailman 2.1.26\n" "POT-Creation-Date: Sun Jun 3 17:52:55 2018\n" -"PO-Revision-Date: 2018-05-27 02:02+09:00\n" +"PO-Revision-Date: 2018-06-06 03:29+09:00\n" "Last-Translator: Yasuhito FUTATSUKI at POEM <futatuki@poem.co.jp>\n" "Language-Team: Japanese <mailman-users-jp@googlegroups.com>\n" "Language: ja\n" @@ -3862,7 +3862,7 @@ msgstr "英語 (米国)" #: Mailman/Defaults.py:1749 msgid "Esperanto" -msgstr "" +msgstr "エスペラント" #: Mailman/Defaults.py:1750 msgid "Spanish (Spain)" diff --git a/messages/ja/doc/Defaults.py.in b/messages/ja/doc/Defaults.py.in index cfdcd711..89b0f33b 100755 --- a/messages/ja/doc/Defaults.py.in +++ b/messages/ja/doc/Defaults.py.in @@ -20,7 +20,7 @@ # [訳註] このファイルは、Mailman 2.1.26 配布物に含まれる # Mailman/Defaults.py.in (launchpad.net での Bazaar リビジョンは -# 1738) のコメント部分を日本語 (共通語) に翻訳したものです。 +# 1763) のコメント部分を日本語 (共通語) に翻訳したものです。 # 配布等の条件は原文と同様、GNU 一般公衆利用許諾契約書 (GNU # General Public License) に従います (上記も参照ください)。内容の # 正確な理解のためには、配布物に含まれる原文を参照されることを @@ -166,14 +166,22 @@ RECAPTCHA_SITE_KEY = None RECAPTCHA_SECRET_KEY = None # インストール環境全体でのBANリスト。このインストール環境全体のすべての -# リストで購読を禁止する電子メールアドレスおよび正規表現パターン(先頭文字 +# リストで入会を禁止する電子メールアドレスおよび正規表現パターン(先頭文字 # が「^」)のリストです。これはリスト個別の ban_list を補完します。 # 例として、 xxx@example.net と @example.com の yyy から始まる任意の -# アドレスを購読禁止にするには -# GLOBAL_BAN_LIST = ['xxx@example.net', '^yyy.*@example\.com$'] +# アドレスを入会禁止にするには +# GLOBAL_BAN_LIST = ['xxx@example\.net', '^yyy.*@example\.com$'] # のように設定します。 GLOBAL_BAN_LIST = [] +# 以下を Yes にセットすると、Web からの入会依頼で Spamhaus の SBL, CSS, +# XBL に登録されている IP アドレスからのものをブロックします。 +# py2-ipaddress がインストールされている場合には IPv6 アドレスにも +# 対応しますが、なければ IPv4 アドレスにのみ対応します。 +# py2-ipaddress モジュールが Python 環境にインストールされていなければ +# pip を使用してインストールすることができます。 +BLOCK_SPAMHAUS_LISTED_IP_SUBSCRIBE = No + # text/html パートをプレーンテキストに変換するコマンド。このコマンドは # 結果を標準出力に出力しなければなりません。 %(filename)s はプログラムが # 処理する一時ファイルの名前になります。 @@ -1897,6 +1905,7 @@ add_language('cs', _('Czech'), 'iso-8859-2', 'ltr') add_language('da', _('Danish'), 'iso-8859-1', 'ltr') add_language('de', _('German'), 'iso-8859-1', 'ltr') add_language('en', _('English (USA)'), 'us-ascii', 'ltr') +add_language('eo', _('Esperanto'), 'utf-8', 'ltr') add_language('es', _('Spanish (Spain)'), 'iso-8859-1', 'ltr') add_language('et', _('Estonian'), 'iso-8859-15', 'ltr') add_language('eu', _('Euskara'), 'iso-8859-15', 'ltr') # Basque |