[Mailman-Users] 500 errors with certain domains
John Dragun
john at dragunsigns.com
Wed Jun 18 15:34:19 CEST 2014
I have been running mailman on a Freebsd server for about 10 years. I am
now migrating to a bigger server running Centos. The problems I have
been having I have been able to work through with all the help posted in
these lists and forums, but I am at a point where I am stuck.
If i connect via my ip address: 216.xxx.xxx.xxx/mailman/listinfo, I get
in, I see no lists even though I made a mailman list as public, I can
the got to the admin page, still do not see the list, but I can go to
216.xxx.xxx.xxx/mailman/admin/mailman and log in. Once there if I go to
post a message in the waiting for moderator, when I hit the save changes
button, the url reverts to http://draguncomputers/mailman/admin/mailman
and I get a 500 error. I have virtual hosts, and only one uses the list.
System CentOS 6 with Cpanel.
Defaults.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
# Some convenient constants
try:
True, False
except NameError:
True = 1
False = 0
Yes = yes = On = on = True
No = no = Off = off = False
#####
# General system-wide defaults
#####
# Should image logos be used? Set this to 0 to disable image logos from
"our
# sponsors" and just use textual links instead (this will also disable the
# shortcut "favicon"). Otherwise, this should contain the URL base path to
# the logo images (and must contain the trailing slash).. If you want to
# disable Mailman's logo footer altogther, hack
# Mailman/htmlformat.py:MailmanLogo(), which also contains the hardcoded
links
# and image names.
IMAGE_LOGOS = '/img-sys/'
# The name of the Mailman favicon
SHORTCUT_ICON = 'mm-icon.png'
# Don't change MAILMAN_URL, unless you want to point it at one of the
mirrors.
MAILMAN_URL = 'http://www.gnu.org/software/mailman/index.html'
#MAILMAN_URL = 'http://www.list.org/'
#MAILMAN_URL = 'http://mailman.sf.net/'
# Mailman needs to know about (at least) two fully-qualified domain names
# (fqdn); 1) the hostname used in your urls, and 2) the hostname used in
email
# addresses for your domain. For example, if people visit your Mailman
system
# with "http://www.dom.ain/mailman" then your url fqdn is "www.dom.ain", and
# if people send mail to your system via "yourlist at dom.ain" then your email
# fqdn is "dom.ain". DEFAULT_URL_HOST controls the former, and
# DEFAULT_EMAIL_HOST controls the latter. Mailman also needs to know how to
# map from one to the other (this is especially important if you're running
# with virtual domains). You use "add_virtualhost(urlfqdn, emailfqdn)"
to add
# new mappings.
#
# If you don't need to change DEFAULT_EMAIL_HOST and DEFAULT_URL_HOST in
your
# mm_cfg.py, then you're done; the default mapping is added
automatically. If
# however you change either variable in your mm_cfg.py, then be sure to also
# include the following:
#
# add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
#
# because otherwise the default mappings won't be correct.
DEFAULT_EMAIL_HOST = 'draguncomputers.com'
DEFAULT_URL_HOST = 'draguncomputers.com'
DEFAULT_URL_PATTERN = 'http://%s/mailman/'
# DEFAULT_HOST_NAME has been replaced with DEFAULT_EMAIL_HOST, however some
# sites may have the former in their mm_cfg.py files. If so, we'll believe
# that, otherwise we'll believe DEFAULT_EMAIL_HOST. Same for DEFAULT_URL.
DEFAULT_HOST_NAME = None
DEFAULT_URL = None
HOME_PAGE = 'index.html'
MAILMAN_SITE_LIST = 'mailman'
# Normally when a site administrator authenticates to a web page with
the site
# password, they get a cookie which authorizes them as the list admin. It
# makes me nervous to hand out site auth cookies because if this cookie is
# cracked or intercepted, the intruder will have access to every list on the
# site. OTOH, it's dang handy to not have to re-authenticate to every
list on
# the site. Set this value to Yes to allow site admin cookies.
ALLOW_SITE_ADMIN_COOKIES = No
# If the following is set to a non-zero value, web authentication
cookies will
# expire that many seconds following their last use.
AUTHENTICATION_COOKIE_LIFETIME = 0
# Form lifetime is set against Cross Site Request Forgery.
FORM_LIFETIME = hours(1)
# If the following is set to a non-empty string, this string in combination
# with the time, list name and the IP address of the requestor is used to
# create a hidden hash as part of the subscribe form on the listinfo page.
# This hash is checked upon form submission and the subscribe fails if it
# doesn't match. I.e. the form posted must be first retrieved from the
# listinfo CGI by the same IP that posts it. The subscribe also fails if
# the time the form was retrieved is more than the above FORM_LIFETIME
or less
# than the below SUBSCRIBE_FORM_MIN_TIME before submission.
# Important: If you have any static subscribe forms on your web site,
setting
# this option will break them. With this option set, subscribe forms
must be
# dynamically generated to include the hidden data. See the code block
# beginning with "if mm_cfg.SUBSCRIBE_FORM_SECRET:" in
Mailman/Cgi/listinfo.py
# for the details of the hidden data.
SUBSCRIBE_FORM_SECRET = None
# If SUBSCRIBE_FORM_SECRET is not None, this is the minimum time the
user must
# take after retrieving the form before submitting it. Set to 0 to skip
this
# test.
SUBSCRIBE_FORM_MIN_TIME = seconds(5)
# Command that is used to convert text/html parts into plain text. This
# should output results to standard output. %(filename)s will contain the
# name of the temporary file that the program should operate on.
HTML_TO_PLAIN_TEXT_COMMAND = '/usr/bin/lynx -dump %(filename)s'
# A Python regular expression character class which defines the characters
# allowed in list names. Lists cannot be created with names containing any
# character that doesn't match this class.
ACCEPTABLE_LISTNAME_CHARACTERS = '[-+_.=a-z0-9]'
#####
# Virtual domains
#####
# Set up your virtual host mappings here. This is primarily used for the
# thru-the-web list creation, so its effects are currently fairly limited.
# Use add_virtualhost() call to add new mappings. The keys are strings as
# determined by Utils.get_domain(), the values are as appropriate for
# DEFAULT_HOST_NAME.
VIRTUAL_HOSTS = {}
# When set to Yes, the listinfo and admin overviews of lists on the machine
# will be confined to only those lists whose web_page_url configuration
option
# host is included within the URL by which the page is visited - only those
# "on the virtual host". When set to No, all advertised (i.e. public) lists
# are included in the overview.
VIRTUAL_HOST_OVERVIEW = On
# Helper function; use this in your mm_cfg.py files. If optional
emailhost is
# omitted it defaults to urlhost with the first name stripped off, e.g.
#
# 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()
# And set the default
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
# Note that you will want to run bin/fix_url.py to change the domain of an
# existing list. bin/fix_url.py must be run within the bin/withlist script,
# like so: bin/withlist -l -r bin/fix_url.py <listname>
mm_cfg.py
###############################################
# Here's where we get the distributed defaults.
from Defaults import *
##################################################
# Put YOUR site-specific settings below this line.
#DEFAULT_URL_PATTERN = 'http://%s/mailman/'
#PUBLIC_ARCHIVE_URL = '/pipermail'
#PUBLIC_ARCHIVE_URL = 'http://% (hostman)s/pipermail/%(listman)s'
#DEFAULT_EMAILHOST = 'draguncomputers.com'
VIRTUAL_HOSTS.clear
add_virtualhost('www.draguncomputers.com, draguncomputers.com')
add_virtualhost('www.askchip.com, askchip.com')
Log outputs:
drwxrwsr-x 2 mailman mailman 4096 Jun 17 21:24 ./
drwxrwsr-x 21 mailman mailman 4096 Jun 17 20:49 ../
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 admin*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 admindb*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 confirm*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 create*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 edithtml*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 listinfo*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 options*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 private*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 rmlist*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 roster*
-rwsr-sr-x 1 mailman mailman 21631 Jun 17 21:24 subscribe*
root at vps-1157094-21235 [/usr/local/cpanel/3rdparty/mailman]#
mailman
error_log:
[Wed Jun 18 09:16:03 2014] [error] [client 173.245.xxx.xxx] Premature
end of script headers: admindb, referer:
http://216.224.171.137/mailman/admindb/mailman
[Wed Jun 18 09:16:04 2014] [error] [client 173.245.xxx.xxx] suexec
policy violation: see suexec log for more details, referer:
http://draguncomputers.com/mailman/admindb/mailman
[Wed Jun 18 09:16:04 2014] [error] [client 173.245.xxx.xxx] Premature
end of script headers: admindb, referer:
http://draguncomputers.com/mailman/admindb/mailman
Apache:
Jun 17 21:47:39 2014 admin(10560):
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
admin(10560): [----- Mailman Version: 2.1.18-1 -----]
admin(10560): [----- Traceback ------]
admin(10560): Traceback (most recent call last):
admin(10560): File
"/usr/local/cpanel/3rdparty/mailman/scripts/driver", line 117, in run_main
admin(10560): main()
admin(10560): File
"/usr/local/cpanel/3rdparty/mailman/Mailman/Cgi/admin.py", line 230, in main
admin(10560): show_results(mlist, doc, category, subcat, cgidata)
admin(10560): File
"/usr/local/cpanel/3rdparty/mailman/Mailman/Cgi/admin.py", line 452, in
show_results
admin(10560): otherlinks.AddItem(Link(mlist.GetBaseArchiveURL(),
admin(10560): File
"/usr/local/cpanel/3rdparty/mailman/Mailman/Archiver/Archiver.py", line
147, in GetBaseArchiveURL
admin(10560): 'hostname': hostname
admin(10560): ValueError: unsupported format character '(' (0x28) at index 9
admin(10560): [----- Python Information -----]
admin(10560): sys.version = 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]
admin(10560): sys.executable = /usr/local/cpanel/3rdparty/bin/python
admin(10560): sys.prefix = /usr
admin(10560): sys.exec_prefix = /usr
admin(10560): sys.path =
['/usr/local/cpanel/3rdparty/mailman/pythonlib',
'/usr/local/cpanel/3rdparty/mailman',
'/usr/local/cpanel/3rdparty/mailman/scripts',
'/usr/local/cpanel/3rdparty/mailman', '/usr/lib64/python26.zip',
'/usr/lib64/python2.6/', '/usr/lib64/python2.6/plat-linux2',
'/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old',
'/usr/lib64/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages']
admin(10560): sys.platform = linux2
admin(10560): [----- Environment Variables -----]
admin(10560): HTTP_REFERER:
http://216.224.171.137/mailman/admin/mailman
admin(10560): SERVER_SOFTWARE: Apache/2.2.27 (Unix) mod_ssl/2.2.27
OpenSSL/1.0.1e-fips mod_bwlimited/1.4
admin(10560): SCRIPT_NAME: /mailman/admin
admin(10560): SERVER_SIGNATURE: <address>Apache/2.2.27 (Unix)
mod_ssl/2.2.27 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 Server at
216.224.171.137 Port 80</address>
admin(10560):
admin(10560): REQUEST_METHOD: POST
admin(10560): PATH_INFO: /mailman
admin(10560): SERVER_PROTOCOL: HTTP/1.1
admin(10560): QUERY_STRING:
admin(10560): CONTENT_LENGTH: 38
admin(10560): HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64;
rv:29.0) Gecko/20100101 Firefox/29.0
admin(10560): HTTP_CONNECTION: keep-alive
admin(10560): HTTP_COOKIE:
admin(10560): SERVER_NAME: 216.224.Jun 17 21:47:39 2014
admin(10560): @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
admin(10560): [----- Mailman Version: 2.1.18-1 -----]
admin(10560): [----- Traceback ------]
admin(10560): Traceback (most recent call last):
admin(10560): File
"/usr/local/cpanel/3rdparty/mailman/scripts/driver", line 117, in run_main
admin(10560): main()
admin(10560): File
"/usr/local/cpanel/3rdparty/mailman/Mailman/Cgi/admin.py", line 230, in main
admin(10560): show_results(mlist, doc, category, subcat, cgidata)
admin(10560): File
"/usr/local/cpanel/3rdparty/mailman/Mailman/Cgi/admin.py", line 452, in
show_results
admin(10560): otherlinks.AddItem(Link(mlist.GetBaseArchiveURL(),
admin(10560): File
"/usr/local/cpanel/3rdparty/mailman/Mailman/Archiver/Archiver.py", line
147, in GetBaseArchiveURL
admin(10560): 'hostname': hostname
admin(10560): ValueError: unsupported format character '(' (0x28) at index 9
admin(10560): [----- Python Information -----]
admin(10560): sys.version = 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]
admin(10560): sys.executable = /usr/local/cpanel/3rdparty/bin/python
admin(10560): sys.prefix = /usr
admin(10560): sys.exec_prefix = /usr
admin(10560): sys.path =
['/usr/local/cpanel/3rdparty/mailman/pythonlib',
'/usr/local/cpanel/3rdparty/mailman',
'/usr/local/cpanel/3rdparty/mailman/scripts',
'/usr/local/cpanel/3rdparty/mailman', '/usr/lib64/python26.zip',
'/usr/lib64/python2.6/', '/usr/lib64/python2.6/plat-linux2',
'/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old',
'/usr/lib64/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages']
admin(10560): sys.platform = linux2
admin(10560): [----- Environment Variables -----]
admin(10560): HTTP_REFERER:
http://216.224.171.137/mailman/admin/mailman
admin(10560): SERVER_SOFTWARE: Apache/2.2.27 (Unix) mod_ssl/2.2.27
OpenSSL/1.0.1e-fips mod_bwlimited/1.4
admin(10560): SCRIPT_NAME: /mailman/admin
admin(10560): SERVER_SIGNATURE: <address>Apache/2.2.27 (Unix)
mod_ssl/2.2.27 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 Server at
216.224.xxx.xxx Port 80</address>
admin(10560):
admin(10560): REQUEST_METHOD: POST
admin(10560): PATH_INFO: /mailman
admin(10560): SERVER_PROTOCOL: HTTP/1.1
admin(10560): QUERY_STRING:
admin(10560): CONTENT_LENGTH: 38
admin(10560): HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64;
rv:29.0) Gecko/20100101 Firefox/29.0
admin(10560): HTTP_CONNECTION: keep-alive
admin(10560): HTTP_COOKIE:
admin(10560): SERVER_NAME: 216.224.xxx.xxx
admin(10560): REMOTE_ADDR: 66.55.xxx.xxx
admin(10560): SERVER_PORT: 80
admin(10560): SERVER_ADDR: 216.224.xxx.xxx
admin(10560): DOCUMENT_ROOT: /usr/local/apache/htdocs
admin(10560): PYTHONPATH: /usr/local/cpanel/3rdparty/mailman
admin(10560): SCRIPT_FILENAME:
/usr/local/cpanel/3rdparty/mailman/cgi-bin/admin
admin(10560): SERVER_ADMIN: john at dragunsigns.com
admin(10560): HTTP_HOST: 216.224.xxx.xxx
admin(10560): REQUEST_URI: /mailman/admin/mailman
admin(10560): HTTP_ACCEPT:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
admin(10560): GATEWAY_INTERFACE: CGI/1.1
admin(10560): REMOTE_PORT: 8643
admin(10560): HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.5
admin(10560): CONTENT_TYPE: application/x-www-form-urlencoded
admin(10560): HTTP_ACCEPT_ENCODING: gzip, deflate
admin(10560): REMOTE_ADDR: 66.55.150.181
admin(10560): SERVER_PORT: 80
admin(10560): SERVER_ADDR: 216.224.171.137
admin(10560): DOCUMENT_ROOT: /usr/local/apache/htdocs
admin(10560): PYTHONPATH: /usr/local/cpanel/3rdparty/mailman
admin(10560): SCRIPT_FILENAME:
/usr/local/cpanel/3rdparty/mailman/cgi-bin/admin
admin(10560): SERVER_ADMIN: john at dragunsigns.com
admin(10560): HTTP_HOST: 216.224.171.137
admin(10560): REQUEST_URI: /mailman/admin/mailman
admin(10560): HTTP_ACCEPT:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
admin(10560): GATEWAY_INTERFACE: CGI/1.1
admin(10560): REMOTE_PORT: 8643
admin(10560): HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.5
admin(10560): CONTENT_TYPE: application/x-www-form-urlencoded
admin(10560): HTTP_ACCEPT_ENCODING: gzip, deflate
I had a hell of a time with permissions etc just to get ANY page to come
up without a 403 or 500 error.
Thanks for looking.
John
More information about the Mailman-Users
mailing list