I took another look at installing Mailman 3, and ended up lost and confused. I'm an experienced software person - but my Python knowledge is minimal.
Fedora 25, python 3.5.3, pretty much out of the box.
Mailman version: 3.1.0 (The other bits and pieces are current - 1.1)
I tried to follow the documentation on http://docs.list.org/en/latest/prodsetup.html,
http://mailman-3-installation.readthedocs.io/en/latest/production_install.ht... claims that the backend requires Python 3.4, but the frontend 2.7. Not clear if this is credible, but it's out there...
https://wiki.list.org/Mailman3 points to Mark Sapiro's experience on
https://wiki.list.org/DOC/Mailman%203%20installation%20experience This
starts off with "For both installs I started with mailman-bundler."
But https://gitlab.com/mailman/mailman-bundler says "All of this
documentation is obsolete! Mailman Bundler is no longer recommended or
supported. " So...
I have yet to find a step-by-step 'bare OS to running MM3" document. I've run MM2.1 lists for years, it wasn't this hard to get started. Just install and edit one config file (plus the webserver.). I don't want to learn a zillion other technologies just to get started - e.g.
But, I decided to see how far I could get. I tried this, based on pip search mailman:
dnf install python3 python3-devel (gets 3.5.3) pip3 install mailman postorius mailmanclient HyperKitty mailman-hyperkitty KittyStore
All went well until KittyStore, which (0.9.3 is what pip found) died with: Collecting storm (from KittyStore) Downloading storm-0.20.tar.bz2 (213kB) 100% |################################| 215kB 318kB/s Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-build-wzs03r_4/storm/setup.py", line 5, in <module> import ez_setup File "/tmp/pip-build-wzs03r_4/storm/ez_setup.py", line 106 except pkg_resources.VersionConflict, e: ^ SyntaxError: invalid syntax
Well, set that aside, and install the rest, which seems to work.
Try again with KittyStore, same failure. So maybe skip the archive for now.
Try 'mailman info', another syntax error.
Traceback (most recent call last):
File
"/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line
272, in endElementNS
self.context.end()
File "/usr/lib/python3.5/site-packages/zope/configuration/config.py",
line 345, in end
self.stack.pop().finish()
File "/usr/lib/python3.5/site-packages/zope/configuration/config.py",
line 452, in finish
args = toargs(context, *self.argdata)
File "/usr/lib/python3.5/site-packages/zope/configuration/config.py",
line 794, in toargs
args[str(name)] = field.fromUnicode(s)
File "/usr/lib/python3.5/site-packages/zope/configuration/fields.py",
line 73, in fromUnicode
value = self.context.resolve(name)
File "/usr/lib/python3.5/site-packages/zope/configuration/config.py",
line 151, in resolve
mod = __import__(mname, *_import_chickens)
File "/usr/lib/python3.5/site-packages/mailman/database/factory.py",
line 22, in <module>
import alembic.command
File "/usr/lib/python3.5/site-packages/alembic/command.py", line 3, in
<module>
from .script import ScriptDirectory
File "/usr/lib/python3.5/site-packages/alembic/script/__init__.py",
line 1, in <module>
from .base import ScriptDirectory, Script # noqa
File "/usr/lib/python3.5/site-packages/alembic/script/base.py", line
2, in <module>
from dateutil import tz
File "/usr/lib/python3.5/site-packages/dateutil/tz.py", line 78
self._name
,
^
SyntaxError: invalid syntax
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/bin/mailman", line 9, in <module> load_entry_point('mailman==3.1.0', 'console_scripts', 'mailman')() File "/usr/lib/python3.5/site-packages/mailman/bin/mailman.py", line 97, in main initialize(config_path) File "/usr/lib/python3.5/site-packages/mailman/core/initialize.py", line 184, in initialize initialize_1(config_path) File "/usr/lib/python3.5/site-packages/mailman/core/initialize.py", line 101, in initialize_1 xmlconfig.string(zcml.decode('utf-8')) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 513, in string processxmlfile(f, context) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 295, in processxmlfile parser.parse(src) File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 110, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib64/python3.5/xml/sax/xmlreader.py", line 125, in parse self.feed(buffer) File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 210, in feed self._parser.Parse(data, isFinal) File "/builddir/build/BUILD/Python-3.5.3/Modules/pyexpat.c", line 468, in EndElement File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 370, in end_element_ns self._cont_handler.endElementNS(pair, None) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 281, in endElementNS None, sys.exc_info()[2]) File "/usr/lib/python3.5/site-packages/zope/configuration/_compat.py", line 38, in reraise raise value.with_traceback(tb) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 272, in endElementNS self.context.end() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 345, in end self.stack.pop().finish() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 452, in finish args = toargs(context, *self.argdata) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 794, in toargs args[str(name)] = field.fromUnicode(s) File "/usr/lib/python3.5/site-packages/zope/configuration/fields.py", line 73, in fromUnicode value = self.context.resolve(name) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 151, in resolve mod = __import__(mname, *_import_chickens) File "/usr/lib/python3.5/site-packages/mailman/database/factory.py", line 22, in <module> import alembic.command File "/usr/lib/python3.5/site-packages/alembic/command.py", line 3, in <module> from .script import ScriptDirectory File "/usr/lib/python3.5/site-packages/alembic/script/__init__.py", line 1, in <module> from .base import ScriptDirectory, Script # noqa File "/usr/lib/python3.5/site-packages/alembic/script/base.py", line 2, in <module> from dateutil import tz zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "<string>", line 65.2-69.6 SyntaxError: invalid syntax (tz.py, line 78)
And the same traceback from 'mailman start'
https://pythonhosted.org/mailman/src/mailman/docs/START.html refers to src/mailman/config/schema.cfg, /usr/lib/python3.5/site-packages/mailman/config/schema.cfg exists.
http://docs.list.org/en/latest/prodsetup.html refers to "Your Django Site's settings.py". I don't have any (other) Django sites. "locate" turns up /usr/lib/python3.5/site-packages/django/conf/global_settings.py, but it looks to me as if Mailman needs one (or maybe one/list) Django site.
Bottom line - I'd like to try Mailman 3 for a new project - especially since I pre-process inbound mail, and will have to speak LMTP. But I'm lost trying to follow the scattered docs that try to explain how to bring it up.
Any pointers, or efforts to record a from-scratch install would be appreciated.
Also, is version 3 supplying equivalents to the Mailman 2.1 list_lists and config_list utilities, or do I have to interface to the new REST API? (For the latter, I only really need to import and export the topics definitions....)
Hi Tlhackque,
I went through a similar battle with installing Mailman 3 but emerged victorious in the end. Here are some tips that might help you out.
There are several places where you can find Mailman 3 docs. It is confusing. The most complete documentation I found is here: https://mailman.readthedocs.io/en/latest/src/mailman/docs/install.html
Don't use mailman bundler
Start with installing just Mailman 3 Core. Core is the part of Mailman 3 that talks to your mail server and controls lists and members of lists. Leave Postorius and Hyperkitty out of it until you have Core running and you understand what it is doing. You can work directly with Mailman 3 using
mailman shell
or the Mailman 3 Core REST API https://mailman.readthedocs.io/en/latest/src/mailman/rest/docs/rest.htmlMailman 3 Core indeed requires python 3
Use Python's
virtualenv -p python3
to install Mailman 3 Core. It looks like a lot of the problems you're having are because of dependency/version hell. virtualenv will help with this. Successfully dockerizing Mailman 3 Core will help even more! I read over on the Mailman 3 Users list that an install process using Docker will soon be the canonical way to install Mailman 3, which is great.Use a SQL backend with Mailman 3 Core that allows you to inspect its DB tables directly. This is so you can see what it is doing behind the scenes when you interact with it via
mailman shell
or the REST API. The DB schema is sane and easy to navigate. https://mailman.readthedocs.io/en/latest/src/mailman/docs/database.htmlI really like that I was able to install Mailman 3 Core right in a non-privileged user's home directory. My server is just a stock Ubuntu AWS EC2 instance. My Mailman 3 Core install is in
/home/ubuntu/mailman
with a configuration file of/home/ubuntu/mailman/var/etc/mailman.cfg
. I am running Mailman 3 Core in production from the regularubuntu
user's home directory in a virtualenv. I do not know if this is the recommended way to do it, but the documentation is especially sparse in this area, and it seems to work!
As best I can remember (it's been a couple months), here are the steps I followed to get it up and running:
cd ~
git clone https://gitlab.com/mailman/mailman.git
cd mailman
virtualenv -p python3 venv
source venv/bin/activate
python setup.py develop
- I am pretty sure this setup command will place a configuration file into
~/mailman/var/etc/mailman.cfg
. Edit this file. https://mailman.readthedocs.io/en/latest/src/mailman/config/docs/config.html mailman info
can confirm which configuration file is in usemailman start
will start up Mailman 3 Core. This is what the parent background process command looks like inps -ef
:/home/ubuntu/mailman/venv/bin/python /home/ubuntu/mailman/venv/bin/master -C /home/ubuntu/mailman/var/etc/mailman.cfg
- Logs are in ~/mailman/var/logs
It is not a straightforward install process and requires a little detective work based on your environment and mail server. I had the disadvantage of never being a Mailman 2 user, so a big chunk of my learning curve was understanding Mailman terminology and its way of doing things.
I still do not have Postorius or Hyperkitty installed. My use case is a PHP-based CMS which administers Mailman 3 Core via its REST API. I wrote a quick and dirty PHP client and it works surprisingly well. Mailman 3 Core has been solid in production and easy to deal with via the REST API.
Good luck, and you might want to check out the Mailman 3-specific users list here: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/
On Sat, Jun 17, 2017 at 5:14 PM, tlhackque via Mailman-Users < mailman-users@python.org> wrote:
I took another look at installing Mailman 3, and ended up lost and confused. I'm an experienced software person - but my Python knowledge is minimal.
Fedora 25, python 3.5.3, pretty much out of the box.
Mailman version: 3.1.0 (The other bits and pieces are current - 1.1)
I tried to follow the documentation on http://docs.list.org/en/latest/prodsetup.html,
http://mailman-3-installation.readthedocs.io/en/latest/ production_install.html claims that the backend requires Python 3.4, but the frontend 2.7. Not clear if this is credible, but it's out there...
https://wiki.list.org/Mailman3 points to Mark Sapiro's experience on https://wiki.list.org/DOC/Mailman%203%20installation%20experience This starts off with "For both installs I started with mailman-bundler." But https://gitlab.com/mailman/mailman-bundler says "All of this documentation is obsolete! Mailman Bundler is no longer recommended or supported. " So...
I have yet to find a step-by-step 'bare OS to running MM3" document. I've run MM2.1 lists for years, it wasn't this hard to get started. Just install and edit one config file (plus the webserver.). I don't want to learn a zillion other technologies just to get started - e.g.
But, I decided to see how far I could get. I tried this, based on pip search mailman:
dnf install python3 python3-devel (gets 3.5.3) pip3 install mailman postorius mailmanclient HyperKitty mailman-hyperkitty KittyStore
All went well until KittyStore, which (0.9.3 is what pip found) died with: Collecting storm (from KittyStore) Downloading storm-0.20.tar.bz2 (213kB) 100% |################################| 215kB 318kB/s Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-build-wzs03r_4/storm/setup.py", line 5, in <module> import ez_setup File "/tmp/pip-build-wzs03r_4/storm/ez_setup.py", line 106 except pkg_resources.VersionConflict, e: ^ SyntaxError: invalid syntax
Well, set that aside, and install the rest, which seems to work.
Try again with KittyStore, same failure. So maybe skip the archive for now.
Try 'mailman info', another syntax error.
Traceback (most recent call last): File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 272, in endElementNS self.context.end() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 345, in end self.stack.pop().finish() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 452, in finish args = toargs(context, *self.argdata) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 794, in toargs args[str(name)] = field.fromUnicode(s) File "/usr/lib/python3.5/site-packages/zope/configuration/fields.py", line 73, in fromUnicode value = self.context.resolve(name) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 151, in resolve mod = __import__(mname, *_import_chickens) File "/usr/lib/python3.5/site-packages/mailman/database/factory.py", line 22, in <module> import alembic.command File "/usr/lib/python3.5/site-packages/alembic/command.py", line 3, in <module> from .script import ScriptDirectory File "/usr/lib/python3.5/site-packages/alembic/script/__init__.py", line 1, in <module> from .base import ScriptDirectory, Script # noqa File "/usr/lib/python3.5/site-packages/alembic/script/base.py", line 2, in <module> from dateutil import tz File "/usr/lib/python3.5/site-packages/dateutil/tz.py", line 78
self._name
, ^ SyntaxError: invalid syntaxDuring handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/bin/mailman", line 9, in <module> load_entry_point('mailman==3.1.0', 'console_scripts', 'mailman')() File "/usr/lib/python3.5/site-packages/mailman/bin/mailman.py", line 97, in main initialize(config_path) File "/usr/lib/python3.5/site-packages/mailman/core/initialize.py", line 184, in initialize initialize_1(config_path) File "/usr/lib/python3.5/site-packages/mailman/core/initialize.py", line 101, in initialize_1 xmlconfig.string(zcml.decode('utf-8')) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 513, in string processxmlfile(f, context) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 295, in processxmlfile parser.parse(src) File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 110, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib64/python3.5/xml/sax/xmlreader.py", line 125, in parse self.feed(buffer) File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 210, in feed self._parser.Parse(data, isFinal) File "/builddir/build/BUILD/Python-3.5.3/Modules/pyexpat.c", line 468, in EndElement File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 370, in end_element_ns self._cont_handler.endElementNS(pair, None) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 281, in endElementNS None, sys.exc_info()[2]) File "/usr/lib/python3.5/site-packages/zope/configuration/_compat.py", line 38, in reraise raise value.with_traceback(tb) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 272, in endElementNS self.context.end() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 345, in end self.stack.pop().finish() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 452, in finish args = toargs(context, *self.argdata) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 794, in toargs args[str(name)] = field.fromUnicode(s) File "/usr/lib/python3.5/site-packages/zope/configuration/fields.py", line 73, in fromUnicode value = self.context.resolve(name) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 151, in resolve mod = __import__(mname, *_import_chickens) File "/usr/lib/python3.5/site-packages/mailman/database/factory.py", line 22, in <module> import alembic.command File "/usr/lib/python3.5/site-packages/alembic/command.py", line 3, in <module> from .script import ScriptDirectory File "/usr/lib/python3.5/site-packages/alembic/script/__init__.py", line 1, in <module> from .base import ScriptDirectory, Script # noqa File "/usr/lib/python3.5/site-packages/alembic/script/base.py", line 2, in <module> from dateutil import tz zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "<string>", line 65.2-69.6 SyntaxError: invalid syntax (tz.py, line 78)
And the same traceback from 'mailman start'
https://pythonhosted.org/mailman/src/mailman/docs/START.html refers to src/mailman/config/schema.cfg, /usr/lib/python3.5/site-packages/mailman/config/schema.cfg exists.
http://docs.list.org/en/latest/prodsetup.html refers to "Your Django Site's settings.py". I don't have any (other) Django sites. "locate" turns up /usr/lib/python3.5/site-packages/django/conf/global_settings.py, but it looks to me as if Mailman needs one (or maybe one/list) Django site.
Bottom line - I'd like to try Mailman 3 for a new project - especially since I pre-process inbound mail, and will have to speak LMTP. But I'm lost trying to follow the scattered docs that try to explain how to bring it up.
Any pointers, or efforts to record a from-scratch install would be appreciated.
Also, is version 3 supplying equivalents to the Mailman 2.1 list_lists and config_list utilities, or do I have to interface to the new REST API? (For the latter, I only really need to import and export the topics definitions....)
Mailman-Users mailing list Mailman-Users@python.org https://mail.python.org/mailman/listinfo/mailman-users Mailman FAQ: http://wiki.list.org/x/AgA3 Security Policy: http://wiki.list.org/x/QIA9 Searchable Archives: http://www.mail-archive.com/ mailman-users%40python.org/ Unsubscribe: https://mail.python.org/mailman/options/mailman-users/ mark%40nervous.org
On 18-Jun-17 13:03, Mark Lindsay wrote:
Thanks for taking the time to write & share your experience! I'll see if I can reproduce your success.
readthedocs is somewhat off-putting since it asserts different Python version dependencies from the main site.
I did understand that the core requires Python 3. What isn't clear is whether the Front end requires Python 2... I do have 2.7.3 installed.
I didn't know about the mailman3-users list; next round will go there.
I've perused the docs, and decided that I will have to get an instance running & do some experimentation to make sense of them. (e.g. the schemas for the REST API's json are sketchy - I haven't found how topics/topic filters are represented - and they're a key item for me. And the "dumps" are less helpful to a non-python person than raw json.) There's noBut it looks like it should be possible to replace what I did with the 2.1 cli utilities with not much code - and a lot of research.
I can live without the archive for a while, but the main reason for converting my new project to MM3 is the new UI.
It's not obvious that I can use a virtual environment when a webserver has to interact - and especially where the host runs SeLinux (extended access controls.)
I use SQLite elsewhere; I planned to stick with it for this. It's the Python default, and the command interface for queries is reasonable. (And it has a -- sorry -- Perl API, which is the implementation language for the main application.)
I do disagree with you on one point - it doesn't take 'a little detective work' to figure this out. It takes a LOT of detective work :-) I've invested several daze, and still don't have a process running.
But I'll (probably) get there. Eventually. Thanks for the tips.
Hi Tlhackque,
I went through a similar battle with installing Mailman 3 but emerged victorious in the end. Here are some tips that might help you out.
There are several places where you can find Mailman 3 docs. It is confusing. The most complete documentation I found is here: https://mailman.readthedocs.io/en/latest/src/mailman/docs/install.html
Don't use mailman bundler
Start with installing just Mailman 3 Core. Core is the part of Mailman 3 that talks to your mail server and controls lists and members of lists. Leave Postorius and Hyperkitty out of it until you have Core running and you understand what it is doing. You can work directly with Mailman 3 using
mailman shell
or the Mailman 3 Core REST API https://mailman.readthedocs.io/en/latest/src/mailman/rest/docs/rest.htmlMailman 3 Core indeed requires python 3
Use Python's
virtualenv -p python3
to install Mailman 3 Core. It looks like a lot of the problems you're having are because of dependency/version hell. virtualenv will help with this. Successfully dockerizing Mailman 3 Core will help even more! I read over on the Mailman 3 Users list that an install process using Docker will soon be the canonical way to install Mailman 3, which is great.Use a SQL backend with Mailman 3 Core that allows you to inspect its DB tables directly. This is so you can see what it is doing behind the scenes when you interact with it via
mailman shell
or the REST API. The DB schema is sane and easy to navigate. https://mailman.readthedocs.io/en/latest/src/mailman/docs/database.htmlI really like that I was able to install Mailman 3 Core right in a non-privileged user's home directory. My server is just a stock Ubuntu AWS EC2 instance. My Mailman 3 Core install is in
/home/ubuntu/mailman
with a configuration file of/home/ubuntu/mailman/var/etc/mailman.cfg
. I am running Mailman 3 Core in production from the regularubuntu
user's home directory in a virtualenv. I do not know if this is the recommended way to do it, but the documentation is especially sparse in this area, and it seems to work!As best I can remember (it's been a couple months), here are the steps I followed to get it up and running:
cd ~
git clone https://gitlab.com/mailman/mailman.git
https://gitlab.com/mailman/mailman.git%60cd mailman
virtualenv -p python3 venv
source venv/bin/activate
python setup.py develop
- I am pretty sure this setup command will place a configuration file into
~/mailman/var/etc/mailman.cfg
. Edit this file. https://mailman.readthedocs.io/en/latest/src/mailman/config/docs/config.htmlmailman info
can confirm which configuration file is in usemailman start
will start up Mailman 3 Core. This is what the parent background process command looks like inps -ef
:/home/ubuntu/mailman/venv/bin/python /home/ubuntu/mailman/venv/bin/master -C /home/ubuntu/mailman/var/etc/mailman.cfg
- Logs are in ~/mailman/var/logs
It is not a straightforward install process and requires a little detective work based on your environment and mail server. I had the disadvantage of never being a Mailman 2 user, so a big chunk of my learning curve was understanding Mailman terminology and its way of doing things.
I still do not have Postorius or Hyperkitty installed. My use case is a PHP-based CMS which administers Mailman 3 Core via its REST API. I wrote a quick and dirty PHP client and it works surprisingly well. Mailman 3 Core has been solid in production and easy to deal with via the REST API.
Good luck, and you might want to check out the Mailman 3-specific users list here: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/
On Sat, Jun 17, 2017 at 5:14 PM, tlhackque via Mailman-Users
mailto:mailman-users@python.org> wrote: I took another look at installing Mailman 3, and ended up lost and confused. I'm an experienced software person - but my Python knowledge is minimal. Fedora 25, python 3.5.3, pretty much out of the box. Mailman version: 3.1.0 (The other bits and pieces are current - 1.1) I tried to follow the documentation on http://docs.list.org/en/latest/prodsetup.html <http://docs.list.org/en/latest/prodsetup.html>, http://mailman-3-installation.readthedocs.io/en/latest/production_install.html <http://mailman-3-installation.readthedocs.io/en/latest/production_install.html> claims that the backend requires Python 3.4, but the frontend 2.7. Not clear if this is credible, but it's out there... https://wiki.list.org/Mailman3 points to Mark Sapiro's experience on https://wiki.list.org/DOC/Mailman%203%20installation%20experience <https://wiki.list.org/DOC/Mailman%203%20installation%20experience> This starts off with "For both installs I started with mailman-bundler." But https://gitlab.com/mailman/mailman-bundler <https://gitlab.com/mailman/mailman-bundler> says "All of this documentation is obsolete! Mailman Bundler is no longer recommended or supported. " So... I have yet to find a step-by-step 'bare OS to running MM3" document. I've run MM2.1 lists for years, it wasn't this hard to get started. Just install and edit one config file (plus the webserver.). I don't want to learn a zillion other technologies just to get started - e.g. But, I decided to see how far I could get. I tried this, based on pip search mailman: dnf install python3 python3-devel (gets 3.5.3) pip3 install mailman postorius mailmanclient HyperKitty mailman-hyperkitty KittyStore All went well until KittyStore, which (0.9.3 is what pip found) died with: Collecting storm (from KittyStore) Downloading storm-0.20.tar.bz2 (213kB) 100% |################################| 215kB 318kB/s Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-build-wzs03r_4/storm/setup.py", line 5, in <module> import ez_setup File "/tmp/pip-build-wzs03r_4/storm/ez_setup.py", line 106 except pkg_resources.VersionConflict, e: ^ SyntaxError: invalid syntax Well, set that aside, and install the rest, which seems to work. Try again with KittyStore, same failure. So maybe skip the archive for now. Try 'mailman info', another syntax error. Traceback (most recent call last): File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 272, in endElementNS self.context.end() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 345, in end self.stack.pop().finish() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 452, in finish args = toargs(context, *self.argdata) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 794, in toargs args[str(name)] = field.fromUnicode(s) File "/usr/lib/python3.5/site-packages/zope/configuration/fields.py", line 73, in fromUnicode value = self.context.resolve(name) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 151, in resolve mod = __import__(mname, *_import_chickens) File "/usr/lib/python3.5/site-packages/mailman/database/factory.py", line 22, in <module> import alembic.command File "/usr/lib/python3.5/site-packages/alembic/command.py", line 3, in <module> from .script import ScriptDirectory File "/usr/lib/python3.5/site-packages/alembic/script/__init__.py", line 1, in <module> from .base import ScriptDirectory, Script # noqa File "/usr/lib/python3.5/site-packages/alembic/script/base.py", line 2, in <module> from dateutil import tz File "/usr/lib/python3.5/site-packages/dateutil/tz.py", line 78 `self._name`, ^ SyntaxError: invalid syntax During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/bin/mailman", line 9, in <module> load_entry_point('mailman==3.1.0', 'console_scripts', 'mailman')() File "/usr/lib/python3.5/site-packages/mailman/bin/mailman.py", line 97, in main initialize(config_path) File "/usr/lib/python3.5/site-packages/mailman/core/initialize.py", line 184, in initialize initialize_1(config_path) File "/usr/lib/python3.5/site-packages/mailman/core/initialize.py", line 101, in initialize_1 xmlconfig.string(zcml.decode('utf-8')) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 513, in string processxmlfile(f, context) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 295, in processxmlfile parser.parse(src) File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 110, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib64/python3.5/xml/sax/xmlreader.py", line 125, in parse self.feed(buffer) File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 210, in feed self._parser.Parse(data, isFinal) File "/builddir/build/BUILD/Python-3.5.3/Modules/pyexpat.c", line 468, in EndElement File "/usr/lib64/python3.5/xml/sax/expatreader.py", line 370, in end_element_ns self._cont_handler.endElementNS(pair, None) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 281, in endElementNS None, sys.exc_info()[2]) File "/usr/lib/python3.5/site-packages/zope/configuration/_compat.py", line 38, in reraise raise value.with_traceback(tb) File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 272, in endElementNS self.context.end() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 345, in end self.stack.pop().finish() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 452, in finish args = toargs(context, *self.argdata) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 794, in toargs args[str(name)] = field.fromUnicode(s) File "/usr/lib/python3.5/site-packages/zope/configuration/fields.py", line 73, in fromUnicode value = self.context.resolve(name) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 151, in resolve mod = __import__(mname, *_import_chickens) File "/usr/lib/python3.5/site-packages/mailman/database/factory.py", line 22, in <module> import alembic.command File "/usr/lib/python3.5/site-packages/alembic/command.py", line 3, in <module> from .script import ScriptDirectory File "/usr/lib/python3.5/site-packages/alembic/script/__init__.py", line 1, in <module> from .base import ScriptDirectory, Script # noqa File "/usr/lib/python3.5/site-packages/alembic/script/base.py", line 2, in <module> from dateutil import tz zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "<string>", line 65.2-69.6 SyntaxError: invalid syntax (tz.py, line 78) And the same traceback from 'mailman start' https://pythonhosted.org/mailman/src/mailman/docs/START.html <https://pythonhosted.org/mailman/src/mailman/docs/START.html> refers to src/mailman/config/schema.cfg, /usr/lib/python3.5/site-packages/mailman/config/schema.cfg exists. http://docs.list.org/en/latest/prodsetup.html <http://docs.list.org/en/latest/prodsetup.html> refers to "Your Django Site's settings.py". I don't have any (other) Django sites. "locate" turns up /usr/lib/python3.5/site-packages/django/conf/global_settings.py, but it looks to me as if Mailman needs one (or maybe one/list) Django site. Bottom line - I'd like to try Mailman 3 for a new project - especially since I pre-process inbound mail, and will have to speak LMTP. But I'm lost trying to follow the scattered docs that try to explain how to bring it up. Any pointers, or efforts to record a from-scratch install would be appreciated. Also, is version 3 supplying equivalents to the Mailman 2.1 list_lists and config_list utilities, or do I have to interface to the new REST API? (For the latter, I only really need to import and export the topics definitions....) ------------------------------------------------------ Mailman-Users mailing list Mailman-Users@python.org <mailto:Mailman-Users@python.org> https://mail.python.org/mailman/listinfo/mailman-users <https://mail.python.org/mailman/listinfo/mailman-users> Mailman FAQ: http://wiki.list.org/x/AgA3 Security Policy: http://wiki.list.org/x/QIA9 Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/ <http://www.mail-archive.com/mailman-users%40python.org/> Unsubscribe: https://mail.python.org/mailman/options/mailman-users/mark%40nervous.org <https://mail.python.org/mailman/options/mailman-users/mark%40nervous.org>
-- This communication may not represent my employer's views, if any, on the matters discussed.
2017-06-18 20:03 GMT+03:00 Mark Lindsay mark@nervous.org:
I read over on the Mailman 3 Users list that an install process using Docker will soon be the canonical way to install Mailman 3, which is great.
The docker installation is quite usable already, no blocking issues noticed, see https://asynchronous.in/docker-mailman/
You can easily set up all Mailman components with single docker-compose.yml and even have SSL certificates automatically installed by Letsencrypt.
There is no need in manual work fighting versions/dependencies/etc anymore...
Regards, Danil Smirnov https://mailman3.com/
On 06/17/2017 02:14 PM, tlhackque via Mailman-Users wrote:
I took another look at installing Mailman 3, and ended up lost and confused. I'm an experienced software person - but my Python knowledge is minimal.
Fedora 25, python 3.5.3, pretty much out of the box.
Mailman version: 3.1.0 (The other bits and pieces are current - 1.1)
A better list for Mailman 3 discussions is mailman-users@mailman3.org https://lists.mailman3.org/mailman3/lists/mailman-users@mailman3.org/
I tried to follow the documentation on http://docs.list.org/en/latest/prodsetup.html,
http://mailman-3-installation.readthedocs.io/en/latest/production_install.ht... claims that the backend requires Python 3.4, but the frontend 2.7. Not clear if this is credible, but it's out there...
At the moment it actually says "The backend requires Python 3.4 or newer while the frontend requires Python 2.7"
What that means is the Mailman core (mailman) and and the Mailman - HyperKitty plugin (mailman-hyperkitty) require Python 3 (3.4, 3.5 and 3.6 are supported).
Postorius (postorius), HyperKitty (mailman-hyperkitty) and therefore the supporting project modules they import, mailmanclient and django-mailman3 all require Python 2.7.
https://wiki.list.org/Mailman3 points to Mark Sapiro's experience on https://wiki.list.org/DOC/Mailman%203%20installation%20experience This starts off with "For both installs I started with mailman-bundler."
But https://gitlab.com/mailman/mailman-bundler says "All of this documentation is obsolete! Mailman Bundler is no longer recommended or supported. " So...
Yes. I intend to update that. In the mean time I added a note.
I have yet to find a step-by-step 'bare OS to running MM3" document.
Have you seen http://docs.list.org/en/latest/prodsetup.html
I've run MM2.1 lists for years, it wasn't this hard to get started. Just install and edit one config file (plus the webserver.). I don't want to learn a zillion other technologies just to get started - e.g.
But, I decided to see how far I could get. I tried this, based on pip search mailman:
dnf install python3 python3-devel (gets 3.5.3) pip3 install mailman postorius mailmanclient HyperKitty mailman-hyperkitty KittyStore
All went well until KittyStore, which (0.9.3 is what pip found) died with: Collecting storm (from KittyStore) Downloading storm-0.20.tar.bz2 (213kB) 100% |################################| 215kB 318kB/s Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-build-wzs03r_4/storm/setup.py", line 5, in <module> import ez_setup File "/tmp/pip-build-wzs03r_4/storm/ez_setup.py", line 106 except pkg_resources.VersionConflict, e: ^ SyntaxError: invalid syntax
KittyStore is obsolete and not required.
You also need django-mailman3.
Well, set that aside, and install the rest, which seems to work.
Try again with KittyStore, same failure. So maybe skip the archive for now.
Try 'mailman info', another syntax error.
Traceback (most recent call last): File "/usr/lib/python3.5/site-packages/zope/configuration/xmlconfig.py", line 272, in endElementNS self.context.end() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 345, in end self.stack.pop().finish() File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 452, in finish args = toargs(context, *self.argdata) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 794, in toargs args[str(name)] = field.fromUnicode(s) File "/usr/lib/python3.5/site-packages/zope/configuration/fields.py", line 73, in fromUnicode value = self.context.resolve(name) File "/usr/lib/python3.5/site-packages/zope/configuration/config.py", line 151, in resolve mod = __import__(mname, *_import_chickens) File "/usr/lib/python3.5/site-packages/mailman/database/factory.py", line 22, in <module> import alembic.command File "/usr/lib/python3.5/site-packages/alembic/command.py", line 3, in <module> from .script import ScriptDirectory File "/usr/lib/python3.5/site-packages/alembic/script/__init__.py", line 1, in <module> from .base import ScriptDirectory, Script # noqa File "/usr/lib/python3.5/site-packages/alembic/script/base.py", line 2, in <module> from dateutil import tz File "/usr/lib/python3.5/site-packages/dateutil/tz.py", line 78
self._name
, ^ SyntaxError: invalid syntax
This looks like you have somehow installed the Python 2.7 python_dateutil package in your python 3 library.
-- Mark Sapiro mark@msapiro.net The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On 06/18/2017 10:58 AM, Mark Sapiro wrote:
On 06/17/2017 02:14 PM, tlhackque via Mailman-Users wrote:
I have yet to find a step-by-step 'bare OS to running MM3" document.
Have you seen http://docs.list.org/en/latest/prodsetup.html
Yes, obviously you referenced that earlier :(
And yes, it is not (yet) the step by step you're looking for. We are working on that and also on getting some packaged solutions that are much easier to install, but we're not there yet.
-- Mark Sapiro mark@msapiro.net The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
From: Mailman-Users [mailto:mailman-users- bounces+rosenbaumlm=ornl.gov@python.org] On Behalf Of Mark Sapiro
At the moment it actually says "The backend requires Python 3.4 or newer while the frontend requires Python 2.7"
What that means is the Mailman core (mailman) and and the Mailman - HyperKitty plugin (mailman-hyperkitty) require Python 3 (3.4, 3.5 and 3.6 are supported).
Postorius (postorius), HyperKitty (mailman-hyperkitty) and therefore the supporting project modules they import, mailmanclient and django-mailman3 all require Python 2.7.
Does that mean _at_least_ 2.7, or does it mean I need two different versions of Python on the same box, or does it mean I need two boxes?
On 06/19/2017 08:01 AM, Rosenbaum, Larry M. wrote:
From: Mailman-Users [mailto:mailman-users- bounces+rosenbaumlm=ornl.gov@python.org] On Behalf Of Mark Sapiro
At the moment it actually says "The backend requires Python 3.4 or newer while the frontend requires Python 2.7"
What that means is the Mailman core (mailman) and and the Mailman - HyperKitty plugin (mailman-hyperkitty) require Python 3 (3.4, 3.5 and 3.6 are supported).
Postorius (postorius), HyperKitty (mailman-hyperkitty) and therefore the supporting project modules they import, mailmanclient and django-mailman3 all require Python 2.7.
Does that mean _at_least_ 2.7, or does it mean I need two different versions of Python on the same box, or does it mean I need two boxes?
It means Postorius (postorius), HyperKitty (mailman-hyperkitty) and therefore the supporting project modules they import, mailmanclient and django-mailman3 all require Python 2.7. Not 'at least' Python 2.7, but some 2.7.x.
Python 2.7 and Python 3 are significantly different. Programs can be bilingual, but not all of Postorius, HyperKitty and their dependencies are fully Python 3 compatible yet.
This means you need Python 3.4 or later for Mailman core and Python 2.7.x for Postorius and HyperKitty. These are quite capable of coexisting on the same box and that is probably what you want, but it is possible to run Postorius and HyperKitty on a separate box, but there are potential security issues involved in exposing the core's REST interface beyond 'localhost'.
-- Mark Sapiro mark@msapiro.net The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On Mon, Jun 19, 2017 at 06:53:37PM -0700, Mark Sapiro wrote:
It means Postorius (postorius), HyperKitty (mailman-hyperkitty) and therefore the supporting project modules they import, mailmanclient and django-mailman3 all require Python 2.7. Not 'at least' Python 2.7, but some 2.7.x.
Python 2.7 and Python 3 are significantly different. Programs can be bilingual, but not all of Postorius, HyperKitty and their dependencies are fully Python 3 compatible yet.
This means you need Python 3.4 or later for Mailman core and Python 2.7.x for Postorius and HyperKitty. These are quite capable of coexisting on the same box and that is probably what you want, but it is possible to run Postorius and HyperKitty on a separate box, but there are potential security issues involved in exposing the core's REST interface beyond 'localhost'.
This is all true, but personally I can't see any likelihood of any noticeable uptake of Mailman 3 until it will all run on one version of Python.
Having said that, if there's any specific help needed to achieve that then I'm potentially willing to put some work in.
On 06/19/2017 07:30 PM, Jon Ribbens wrote:
This is all true, but personally I can't see any likelihood of any noticeable uptake of Mailman 3 until it will all run on one version of Python.
Personally, I can't understand why you would say that. Can you elaborate on that? I have no hard data, but I expect that most machines that have any Python applications at all probably have both Python 2 and Python 3 installed and likely have both Python 2 and Python 3 applications.
Keep in mind that both Postorius and HyperKitty, while quite useful, are really separate applications from the Mailman core and are not required to use the core to manage email lists.
Having said that, if there's any specific help needed to achieve that then I'm potentially willing to put some work in.
I'm sure we would welcome your help, but the place to discuss that is mailman-users@mailman3.org https://lists.mailman3.org/mailman3/lists/mailman-users@mailman3.org/ or mailman-developers@python.org https://mail.python.org/mailman/listinfo/mailman-developers.
-- Mark Sapiro mark@msapiro.net The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Hi Larry,
Does that mean _at_least_ 2.7, or does it mean I need two different
versions of Python on the same box, or does it mean I need two boxes?
The virtualenv
tool will solve this problem for you. From
http://python-guide-pt-br.readthedocs.io/en/latest/dev/virtualenvs/ :
A Virtual Environment is a tool to keep the dependencies required by different projects in separate places, by creating virtual Python environments for them. It solves the “Project X depends on version 1.x but, Project Y needs 4.x” dilemma, and keeps your global site-packages directory clean and manageable.
It allows you to have application-specific versions of the python interpreter and python packages on the same machine. The global (server default) version of python will no longer be relevant.
virtualenv -p python3
will give you python 3 for Mailman 3 Core.
virtualenv
will give you python 2 for the other apps.
Mark
participants (6)
-
Danil Smirnov
-
Jon Ribbens
-
Mark Lindsay
-
Mark Sapiro
-
Rosenbaum, Larry M.
-
tlhackque