{"id":24973321,"url":"https://github.com/bluedynamics/mailman.buildout","last_synced_at":"2025-03-29T06:13:02.792Z","repository":{"id":3256152,"uuid":"4294316","full_name":"bluedynamics/mailman.buildout","owner":"bluedynamics","description":"isolated mailman 3 installation including rest API and webui","archived":false,"fork":false,"pushed_at":"2013-10-30T11:31:10.000Z","size":119,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-03T18:38:43.559Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bluedynamics.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-05-11T07:37:08.000Z","updated_at":"2013-10-30T11:31:14.000Z","dependencies_parsed_at":"2022-08-23T14:00:19.510Z","dependency_job_id":null,"html_url":"https://github.com/bluedynamics/mailman.buildout","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fmailman.buildout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fmailman.buildout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fmailman.buildout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fmailman.buildout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluedynamics","download_url":"https://codeload.github.com/bluedynamics/mailman.buildout/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246145089,"owners_count":20730495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-03T18:27:12.504Z","updated_at":"2025-03-29T06:13:02.764Z","avatar_url":"https://github.com/bluedynamics.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"================\nmailman.buildout\n================\n\nBuildout setting up Mailman 3 and postorius using Postfix as MTA.\n\n**Note:** This buildout uses trunk checkouts of ``mailman``, ``mailman.client``\nand ``postorius`` unless this packages are stable and released.\n\n\nInstall\n=======\n\nInstall Postfix::\n\n    apt-get install postfix\n\nCheckout buildout::\n\n    cd /opt\n    git clone git://github.com/bluedynamics/mailman.buildout.git\n\nRun buildout::\n\n    cd mailman.buildout\n    python bootstrap.py -c anon.cfg\n    ./bin/buildout -c anon.cfg\n\nInitialize DB::\n\n    ./bin/django syncdb\n\nWhile DB is initialized, system asks for superuser creation.\n\n\nBuilding Documentation\n======================\n\nMailman sources include a sphinx documentation. In order to generate HTML docs,\nsphinx must be installed in your python. Then you can navigate to::\n\n    $mailman_install_dir/devsrc/mailman\n\nand run::\n\n    python setup.py build_sphinx\n\nGenerated docs are not located at::\n\n    $mailman_install_dir/devsrc/mailman/build/sphinx/html\n\nand can be viewed with any web browser.\n\n\nConfigure Mailman\n=================\n\nCopy ``/path/to/install/devsrc/mailman/src/mailman/config/mailman.cfg`` to\n``/etc/mailman.cfg`` and adjust the following lines::\n\n    [mta]\n    incoming: mailman.mta.postfix.LMTP\n    outgoing: mailman.mta.deliver.deliver\n    lmtp_host: localhost\n    lmtp_port: 8024\n    smtp_host: localhost\n    smtp_port: 25\n\n\nConfigure Postfix\n=================\n\nEdit ``/etc/postfix/main.cf``.\n\nAdd full qualified domain name of list(s) to ``mydestination``::\n\n     mydestination = lists.mydomain.com mydomain.com\n\nAdd this configuration properties::\n\n    recipient_delimiter = +\n    unknown_local_recipient_reject_code = 550\n    owner_request_special = no\n\nDefine transport maps::\n\n    transport_maps =\n        hash:/opt/mailman.buildout/var/data/postfix_lmtp\n\nDefine recipient maps::\n\n    local_recipient_maps =\n        hash:/opt/mailman.buildout/var/data/postfix_lmtp\n\nRestart postfix::\n\n    /etc/init.d/postfix/restart\n\n\nRun Services\n============\n\nStart mailman::\n\n    ./bin/mailman start\n\nRun postorius::\n\n    ./bin/django runserver\n\nPostorius binds to 127.0.0.1:8000 by default\n\n\nCreate Domain\n=============\n\nOpen browser and navigate to portorius (127.0.0.1:8000).\n\nNavigate to settings and klick \"new domain\".\n\nEnter mail host::\n\n    lists.example.com\n\nEnter web host::\n\n    lists.example.com\n\nMailman Domain web host needs to start with protocol schema, e.g. http://.\nAt time of writing this document, postorius has a validation bug in domain form\nvalidation, where no protocol scheme can be defined. In order to fix this, use\nmailman shell via command line by typing::\n\n    ./bin/mailman shell\n\nand finish domain configuration::\n\n    \u003e\u003e\u003e from mailman.interfaces.domain import IDomainManager\n    \u003e\u003e\u003e from zope.component import getUtility\n    \u003e\u003e\u003e manager = getUtility(IDomainManager)\n    \u003e\u003e\u003e domain = manager.get(u'lists.example.com')\n    \u003e\u003e\u003e domain.base_url = u'http://lists.example.com' \n\nThe contact address should also be changed with::\n\n    \u003e\u003e\u003e domain.contact_address = u'postmaster@example.com'\n\nSave changes::\n\n    \u003e\u003e\u003e commit()\n\n\nCreate Mailinglist\n==================\n\nStart creating mailinglist in postorius. Navigate to \"lists\" and click\n\"new list\".\n\nEnter list name, e.g. ``test``.\n\nChoose mailhost.\n\nDefine list owner (defaults to domain contact)\n\nChoose whether to advertise list\n\nEnter description\n\nSave list.\n\nNavigate to \"settings\" -\u003e \"message acceptance\" and set default action for\nmember posts to \"Hold for moderator\"\n\n\nCreating a moderator for list\n=============================\n\nOpen mailman shell with mailinglist::\n\n    ./bin/mailman withlist test@lists.example.com\n\nCreate user which gets moderator in list::\n\n    \u003e\u003e\u003e from mailman.interfaces.usermanager import IUserManager\n    \u003e\u003e\u003e from zope.component import getUtility\n    \u003e\u003e\u003e user_manager = getUtility(IUserManager)\n    \u003e\u003e\u003e moderator = user_manager.create_user(u'foo@example.com', u'Foo')\n\nAdd to list as moderator::\n\n    \u003e\u003e\u003e from mailman.interfaces.member import MemberRole\n    \u003e\u003e\u003e address = list(moderator.addresses)[0]\n    \u003e\u003e\u003e m.subscribe(address, MemberRole.moderator)\n\nSave changes::\n\n    \u003e\u003e\u003e commit()\n\n\nSetting a password for a user\n=============================\n\nOpen mailman shell::\n\n    ./bin/mailman shell\n\nSet password::\n\n    \u003e\u003e\u003e from mailman.interfaces.usermanager import IUserManager\n    \u003e\u003e\u003e from zope.component import getUtility\n    \u003e\u003e\u003e user_manager = getUtility(IUserManager)\n    \u003e\u003e\u003e user = user_manager.get_user(u'foo@example.com')\n    \u003e\u003e\u003e user.password = 'secret'\n\nSave changes::\n\n    \u003e\u003e\u003e commit()\n\nXXX: authenticate in postorius with this user?\n\n\nAdopting templates for mailinglist\n==================================\n\nOpen mailman shell with mailinglist::\n\n    ./bin/mailman withlist test@lists.example.com\n\nSet templates. Can be any URI supported by ``urllib2`` with the addition of\n``mailman:`` URIs::\n\n    \u003e\u003e\u003e m.welcome_message_uri = u'mailman:///welcome.txt'\n    \u003e\u003e\u003e m.goodbye_message_uri = u'file:///path/to/file.txt'\n    \u003e\u003e\u003e m.header_uri = u'mailman:///$listname/$language/header-generic.txt'\n    \u003e\u003e\u003e m.footer_uri = u'mailman:///$listname/$language/footer-generic.txt'\n    \u003e\u003e\u003e commit()\n\nXXX: Correct links in email\n\nXXX: Template locations and assets\n\nNote: The Web confirmation link is completly broken in postorius, remove it\nfrom templates, only email confirmation possible right now.\n\n\nSubscribe to Mailinglist\n========================\n\nSend an email to\n    test-request@lists.example.com\n\nwith subject\n    subscribe\n\nand message\n    subscribe\n\n``test`` is desired mailinglist\n\n\nUnsubscribe from Mailinglist\n============================\n\nSend an email to\n    test-request@lists.example.com\n\nwith subject\n    unsubscribe\n\nand message\n    unsubscribe\n\n``test`` is desired mailinglist\n\n\nCreate postorius user\n=====================\n\nCreate a postorius user permitted to moderate list::\n\n    ./bin/django shell\n    \n    \u003e\u003e\u003e from django.contrib.auth.models import User\n    \u003e\u003e\u003e user = User.objects.create_user(username='john', email='', password='x')\n    \u003e\u003e\u003e user.is_staff = False\n    \u003e\u003e\u003e user.save()\n\nCheck authentication::\n\n    \u003e\u003e\u003e from django.contrib.auth import authenticate\n    \u003e\u003e\u003e authenticate(username=\"john\", password=\"x\")\n    \u003cUser: phonogen\u003e\n\n\nConfigure collective.newsletter\n===============================\n\nInstall ``collective.newsletter`` in your plone instance.\n\nInstall ``collective.newsletter`` from ``addons`` in control panel.\n\nCreate mailing list in ``newsletter`` addon configuration.\n\nGive it a name, and a list email address.\n\nChoose mailman as protocol.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluedynamics%2Fmailman.buildout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluedynamics%2Fmailman.buildout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluedynamics%2Fmailman.buildout/lists"}