Unicode error prevents delivery of post
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
GNU Mailman |
New
|
Undecided
|
Unassigned |
Bug Description
So here's the build.
#######
# N.B. "Mailman3" is a new, active python 2.7 virtualenv.
# God, do I hate bzr for not being git.
steve@turnbull:
7157
steve@turnbull:
-------
revno: 7157 [merge]
committer: Barry Warsaw <email address hidden>
branch nick: 3.0
timestamp: Thu 2012-07-26 00:22:19 -0400
message:
* The policy for archiving has now been collapsed into a single enum, called
ArchivePolicy. This describes the three states of never archive, archive
privately, and archive_publicly. (LP: #967238)
Database
--------
* Schema migrations (LP: #971013)
- include_
- news_prefix_
- news_moderation -> newsgroup_
- archive and archive_private have been collapsed into archive_policy.
- nntp_host has been removed.
* The PostgreSQL port of the schema accidentally added a moderation_callback
column to the mailinglist table. Since this is unused in Mailman, it was
simply commented out of the base schema for PostgreSQL.
-------
steve@turnbull:
Python 2.7.3rc2 (default, Apr 22 2012, 22:30:17)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
steve@turnbull:
Downloading http://
Creating directory '/home/
Creating directory '/home/
Creating directory '/home/
Creating directory '/home/
Getting distribution for 'setuptools'.
Got setuptools 0.6c12dev-r88846.
Generated script '/home/
steve@turnbull:
Develop: '/home/
Downloading http://
Extracting in /tmp/tmpOzSp2M
Now working in /tmp/tmpOzSp2M/
Building a Distribute egg in /home/steve/
/home/steve/
warning: no files found matching '*.rc'
warning: no files found matching '*' under directory '.buildout'
warning: no files found matching '*' under directory 'contrib'
warning: no previously-included files matching '*.egg-info' found anywhere in distribution
no previously-included directories found matching 'src/attic'
no previously-included directories found matching 'src/web'
no previously-included directories found matching 'parts'
Getting distribution for 'z3c.recipe.
Got z3c.recipe.scripts 1.0.1.
Getting distribution for 'zc.recipe.
Got zc.recipe.egg 1.3.2.
Getting distribution for 'z3c.recipe.tag'.
Got z3c.recipe.tag 0.4.1.
Getting distribution for 'zc.recipe.
zip_safe flag not set; analyzing archive contents...
Got zc.recipe.
Getting distribution for 'zope.testrunner'.
package init file 'src/zope/
Creating missing __init__.py for zope.testrunner
Got zope.testrunner 4.0.4.
Getting distribution for 'zope.interface'.
Got zope.interface 4.0.1.
Getting distribution for 'zope.exceptions'.
Got zope.exceptions 4.0.0.1.
Installing interpreter.
Getting distribution for 'zope.testing<4'.
warning: no files found matching '*.test' under directory 'src'
warning: no files found matching 'sampletests' under directory 'src'
Got zope.testing 3.10.3.
Getting distribution for 'zope.event'.
Got zope.event 4.0.0.
Getting distribution for 'zope.configura
Got zope.configuration 4.0.0.
Getting distribution for 'zope.component'.
Got zope.component 4.0.0.
Getting distribution for 'storm'.
Got storm 0.19.
Getting distribution for 'restish'.
Got restish 0.12.1.
Getting distribution for 'passlib'.
warning: no files found matching 'passlib/*.cfg'
no previously-included directories found matching '*.komodoproject'
Got passlib 1.6.1.
Getting distribution for 'mock'.
warning: no files found matching '*.png' under directory 'docs'
warning: no files found matching '*.css' under directory 'docs'
warning: no files found matching '*.html' under directory 'docs'
warning: no files found matching '*.js' under directory 'docs'
zip_safe flag not set; analyzing archive contents...
Got mock 1.0b1.
Getting distribution for 'lazr.smtptest'.
Got lazr.smtptest 1.3.
Getting distribution for 'lazr.config'.
Got lazr.config 1.1.3.
Getting distribution for 'flufl.lock'.
Downloading http://
Extracting in /tmp/easy_
Now working in /tmp/easy_
Building a Distribute egg in /tmp/easy_
/tmp/easy_
zip_safe flag not set; analyzing archive contents...
flufl.__init__: module references __path__
Got flufl.lock 2.2.1.
Getting distribution for 'flufl.i18n'.
Downloading http://
Extracting in /tmp/easy_
Now working in /tmp/easy_
Building a Distribute egg in /tmp/easy_
/tmp/easy_
Got flufl.i18n 1.1.1.
Getting distribution for 'flufl.enum'.
Downloading http://
Extracting in /tmp/easy_
Now working in /tmp/easy_
Building a Distribute egg in /tmp/easy_
/tmp/easy_
zip_safe flag not set; analyzing archive contents...
flufl.__init__: module references __path__
Got flufl.enum 3.3.2.
Getting distribution for 'flufl.bounce'.
Downloading http://
Extracting in /tmp/easy_
Now working in /tmp/easy_
Building a Distribute egg in /tmp/easy_
/tmp/easy_
warning: no previously-included files found matching '*.egg'
no previously-included directories found matching 'build'
zip_safe flag not set; analyzing archive contents...
flufl.__init__: module references __path__
Got flufl.bounce 2.1.1.
Getting distribution for 'argparse'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.orig' found anywhere in distribution
warning: no previously-included files matching '*.rej' found anywhere in distribution
no previously-included directories found matching 'doc/_build'
no previously-included directories found matching 'env24'
no previously-included directories found matching 'env25'
no previously-included directories found matching 'env26'
no previously-included directories found matching 'env27'
zip_safe flag not set; analyzing archive contents...
Got argparse 1.2.1.
Getting distribution for 'zope.schema'.
warning: no files found matching '*.txt' under directory 'src/zope/schema'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got zope.schema 4.2.0.
Getting distribution for 'zope.i18nmessa
Got zope.i18nmessageid 4.0.0.
Getting distribution for 'WebOb'.
no previously-included directories found matching '*.pyc'
no previously-included directories found matching '*.pyo'
Got WebOb 1.2.1.
Getting distribution for 'mimeparse>=0.1.3'.
Got mimeparse 0.1.3.
Getting distribution for 'lazr.delegates'.
Got lazr.delegates 1.2.0.
Generated script '/home/
Generated script '/home/
Generated script '/home/
Generated script '/home/
Generated interpreter '/home/
Installing tags.
Generated script '/home/
Installing test.
Generated script '/home/
steve@turnbull:
Running tests at level 1
Running mailman.
Set up mailman.
Set up mailman.
File "/home/
setup_
File "/home/
layer.setUp()
File "/home/
initialize.
File "/home/
config.db = getUtility(
File "/home/
database.
File "/home/
self.
File "/home/
store = Store(database, GenerationalCac
File "/home/
self.
File "/home/
return self.connection
File "/home/
self.
File "/home/
raw_connection = psycopg2.
File "/usr/lib/
connection_
OperationalError: FATAL: password authentication failed for user "barry"
FATAL: password authentication failed for user "barry"
Running mailman.
Set up mailman.
File "/home/
setup_
File "/home/
setup_
File "/home/
layer.setUp()
File "/home/
initialize.
File "/home/
mailman.
File "/home/
self.
File "/home/
notify(
File "/home/
subscriber(
File "/home/
'Duplicate runner name: {0}'.format(name))
AssertionError: Duplicate runner name: in
Running mailman.
Set up mailman.
File "/home/
setup_
File "/home/
setup_
File "/home/
layer.setUp()
File "/home/
initialize.
File "/home/
mailman.
File "/home/
self.
File "/home/
notify(
File "/home/
subscriber(
File "/home/
'Duplicate runner name: {0}'.format(name))
AssertionError: Duplicate runner name: in
Running mailman.
Set up mailman.
File "/home/
setup_
File "/home/
setup_
File "/home/
setup_
File "/home/
layer.setUp()
File "/home/
initialize.
File "/home/
mailman.
File "/home/
self.
File "/home/
notify(
File "/home/
subscriber(
File "/home/
'Duplicate runner name: {0}'.format(name))
AssertionError: Duplicate runner name: in
Running zope.testrunner
Tear down mailman.
Set up zope.testrunner
Running:
test_acquire_
test_master_state (mailman.
test_current_
test_baseline (mailman.
test_environme
test_environme
test_etc_file (mailman.
test_home_dot_file (mailman.
test_sibling_
test_adding_
test_angle_
test_hash_
test_mismatche
test_no_at_split (mailman.
test_normal_split (mailman.
test_remove_
test_dont_honor_ws (mailman.
test_honor_ws (mailman.
test_indentati
test_simple_wrap (mailman.
test_two_
Ran 21 tests with 0 failures and 0 errors in 0.020 seconds.
Tearing down left over layers:
Tear down zope.testrunner
Tests with errors:
Layer: mailman.
Layer: mailman.
Layer: mailman.
Layer: mailman.
Total: 21 tests, 0 failures, 4 errors in 0.464 seconds.
steve@turnbull:
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
error: invalid command 'build_sphinx'
steve@turnbull:
./eggs/
./eggs/
Binary file ./eggs/
Binary file ./eggs/
./src/mailman/
./src/mailman/
Binary file ./src/mailman/
steve@turnbull:
steve@turnbull:
steve@turnbull:
Starting Mailman's master runner
steve@turnbull:
Created mailing list: <email address hidden>
steve@turnbull:
Python 2.7.3rc2 (default, Apr 22 2012, 22:30:17)
[GCC 4.6.3]
config file: /home/steve/
db url: sqlite:
REST root url: http://
REST credentials: restadmin:restpass
File system paths:
ARCHIVE_DIR = /home/steve/
BIN_DIR = /home/steve/
DATA_DIR = /home/steve/
ETC_DIR = /home/steve/
EXT_DIR = /home/steve/
LIST_DATA_DIR = /home/steve/
LOCK_DIR = /home/steve/
LOCK_FILE = /home/steve/
LOG_DIR = /home/steve/
MESSAGES_DIR = /home/steve/
PID_FILE = /home/steve/
QUEUE_DIR = /home/steve/
TEMPLATE_DIR = /home/steve/
VAR_DIR = /home/steve/
#######
Aug 08 23:56:45 2012 (16782) command failure: /usr/sbin/postmap /home/steve/
Aug 09 12:15:33 2012 (7571) DigestRunner runner started.
Aug 09 12:15:33 2012 (7570) IncomingRunner runner started.
Aug 09 12:15:33 2012 (7579) LMTPRunner runner started.
Aug 09 12:15:33 2012 (7574) OutgoingRunner runner started.
Aug 09 12:15:33 2012 (7575) VirginRunner runner started.
Aug 09 12:15:33 2012 (7580) CommandRunner runner started.
Aug 09 12:15:33 2012 (7576) RetryRunner runner started.
Aug 09 12:15:33 2012 (7581) NNTPRunner runner started.
Aug 09 12:15:34 2012 (7577) RESTRunner runner started.
Aug 09 12:15:34 2012 (7577) Starting REST server
Aug 09 12:15:34 2012 (7573) ArchiveRunner runner started.
Aug 09 12:15:34 2012 (7572) PipelineRunner runner started.
Aug 09 12:15:35 2012 (7578) BounceRunner runner started.
Aug 09 13:39:41 2012 (7570) Uncaught runner exception: Expected unicode, found <type 'datetime.
Aug 09 13:39:41 2012 (7570) Traceback (most recent call last):
File "/home/
self.
File "/home/
keepqueued = self._dispose(
File "/home/
process(mlist, msg, msgdata, start_chain)
File "/home/
link.
File "/home/
request_id = hold_message(mlist, msg, msgdata, None)
File "/home/
RequestType
File "/home/
return function(args[0], config.db.store, *args[1:], **kws)
File "/home/
token = getUtility(
File "/home/
return function(args[0], config.db.store, *args[1:], **kws)
File "/home/
keyval = PendedKeyValue(
File "/home/
self.value = value
File "/home/
obj_
File "/home/
% (type(value), value))
TypeError: Expected unicode, found <type 'datetime.
Aug 09 13:39:41 2012 (7570) SHUNTING: 1344487181.
Aug 09 13:42:09 2012 (7570) Uncaught runner exception: Expected unicode, found <type 'datetime.
Aug 09 13:42:09 2012 (7570) Traceback (most recent call last):
File "/home/
self.
File "/home/
keepqueued = self._dispose(
File "/home/
process(mlist, msg, msgdata, start_chain)
File "/home/
link.
File "/home/
request_id = hold_message(mlist, msg, msgdata, None)
File "/home/
RequestType
File "/home/
return function(args[0], config.db.store, *args[1:], **kws)
File "/home/
token = getUtility(
File "/home/
return function(args[0], config.db.store, *args[1:], **kws)
File "/home/
keyval = PendedKeyValue(
File "/home/
self.value = value
File "/home/
obj_
File "/home/
% (type(value), value))
TypeError: Expected unicode, found <type 'datetime.
Aug 09 13:42:09 2012 (7570) SHUNTING: 1344487329.
#######
# Copyright (C) 2012 by the Free Software Foundation, Inc.
#
# This file was contributed to GNU Mailman as an example
#
# This is an example local configuration file for an Exim installation.
[mailman]
layout: dev
[devmode]
enabled: yes
recipient: <email address hidden>
[language.en]
charset: utf-8
[mta]
# The class defining the interface to the incoming mail transport agent.
incoming: mailman.
# The callable implementing delivery to the outgoing mail transport agent.
# This must accept three arguments, the mailing list, the message, and the
# message metadata dictionary.
outgoing: mailman.
# The runners are defined in the master "mailman.cfg".
# The style is defined in the master "mailman.cfg".
#######
# N.B. All of the methods of class LMTP can probably be replaced with
# trivial methods that just "pass". However I haven't tested that
# yet, so I include the exim.py that was actually used when I created
# my test list "<email address hidden>".
# Copyright (C) 2001-2012 by the Free Software Foundation, Inc.
#
# This file is part of GNU Mailman.
#
# GNU Mailman 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 3 of the License, or (at your option)
# any later version.
#
# GNU Mailman 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
# GNU Mailman. If not, see <http://
"""Creation/
This file has been used with and lightly tested on a Debian system
with the exim4-4.80-4 package.
#### Move this to user-accessible documentation:
Exim doesn't use an alias file.
Instead, the address is filtered by the Exim router and passed to a transport.
Both the relevant router and the transport are named 'mailman3'.
The transport is just an smtp driver with lmtp protocol.
The router needs to accept any name, and parse out the list name from the
administrative aliases. In order to check whether string is actually a
list name, we have Exim check for the directory $var_dir/lists with the same
name as the list's posting address.
AFAICS, creating lists is a no-op here.
I use main/15_
transport/
"""
from __future__ import absolute_import, print_function, unicode_literals
__metaclass__ = type
__all__ = [
'LMTP',
]
# #### Most of these imports can go away, I suppose
import os
import logging
from flufl.lock import Lock
from operator import attrgetter
from zope.component import getUtility
from zope.interface import implementer
from mailman.config import config
from mailman.
from mailman.
IMailTransp
from mailman.
# #### We don't need this AFAICS.
# log = logging.
# #### This can be removed, but that is untested.
def _receipt(mlist):
return os.path.
@implementer(
class LMTP:
"""Connect Mailman to Exim via LMTP."""
# #### This probably can be replaced with "def create(s, m): pass",
# but that is untested.
def create(self, mlist):
"""See `IMailTransport
Exim detects lists in its router. We provide a dummy entry in
the file system in the 'receipts' directory for Exim's check."""
# Acquire a lock file to prevent other processes from racing us here.
lock_file = os.path.
with Lock(lock_file):
# #### This probably can be replaced with "def delete(s, m): pass",
# but that is untested.
def delete(self, mlist):
"""See `IMailTransport
Removes mlist's receipt."""
# Acquire a lock file to prevent other processes from racing us here.
lock_file = os.path.
with Lock(lock_file):
def regenerate(self, output=None):
"""See `IMailTransport
This routine does nothing.
"""
pass
#######
domainlist mm_domains=
MM3_LMTP_PORT=8024
MM3_HOME=
# #### Next two unused?
MM3_UID=list
MM3_GID=list
# The path of the Mailman mail wrapper script
MM3_WRAP=
# The path of the list receipt (only used as a required file when
# verifying list addresses)
MM3_LISTCHK=
#######
# Routers are the only configuration that is order dependent. In my
# Debian configuration, the following routers precede Mailman3:
#
# 00_exim4-
# 100_exim4-
# 150_exim4-
# 200_exim4-
# 300_exim4-
# 400_exim4-
# 430_ack_class_mail # a local hack
# 440_class_mail # a local hack (cont.)
#
# It should be reasonably clear what these do but I'll provide details
# on request.
mailman3_router:
driver = accept
domains = +mm_domains
require_files = MM3_LISTCHK
local_
local_part_suffix = -admin : \
-bounces : -bounces+* : \
-confirm : -confirm+* : \
-join : -leave : \
-owner : -request : \
-subscribe : -unsubscribe
transport = mailman3_transport
#######
mailman3_transport:
driver = smtp
protocol = lmtp
allow_localhost
hosts = localhost
port = MM3_LMTP_PORT
tags: | added: mailman3 |
This is probably not Bug #949924, which should have been fixed a few commits back.