Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter...

56
Sympa Mailinglist Manager Stefan Hornburg GP/RW Erlangen 4th March 2020 Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 1 / 56

Transcript of Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter...

Page 1: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa Mailinglist Manager

Stefan Hornburg

GP/RW Erlangen 4th March 2020

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 1 / 56

Page 2: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Introduction

About Sympa

Mailing list managerAlmost 23 years oldLegacy Perl

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 2 / 56

Page 3: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Introduction

Applications

Mailing list managerNewsletterMarketing

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 3 / 56

Page 4: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Introduction Users

Users

UniversitiesRiseup (riseup.net)

20 thousand lists3.3 million users4.8 million subscriptions

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 4 / 56

Page 5: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Introduction Customers

Customers

HTWK LeipzigOpen Hardware Repository (CERN)Shop for riderseShop (US government)Social Security Law (USA)

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 5 / 56

Page 6: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Introduction Competition

Email Marketing

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 6 / 56

Page 7: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Introduction Motivation

Motivation

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 7 / 56

Page 8: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Introduction Motivation

Motivation

PrivacyInfrastructureOpen SourceFlexibilityCosts

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 8 / 56

Page 9: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Introduction Flexibility

Flexibility

ConfigurationTemplatesScenariosPlugins

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 9 / 56

Page 10: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa basics

Sympa basics

List typesList creation templatesScenarios

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 10 / 56

Page 11: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa basics List types

List types

Public discussion mailing listNewsletterConfidential list...

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 11 / 56

Page 12: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa basics List creation templates

Template files

config.tt2 (Configuration)comment.tt2 (Description)

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 12 / 56

Page 13: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa basics List creation templates

Extract of newsletter configuration

visibility noconceal

send newsletter

process_archive on

archiveweb_access publicmail_access owner

subscribe open

unsubscribe open,notify

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 13 / 56

Page 14: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa basics Scenarios

Incoming email for newletters

# send.newsletter scenario

title.gettext Newsletter, restricted to moderators

is_editor([listname],[sender])smtp,dkim,smime,md5 -> do_it

true()smtp,dkim,smime,md5 -> reject(reason='send_editor')

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 14 / 56

Page 15: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa basics Scenarios

Authentication methods

smtp From: address in emailmd Web interface authenticationdkim Valid DKIM signaturesmime Valid S/MIME signature

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 15 / 56

Page 16: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production

Sympa in production

HTWK LeipzigSympa university wide

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 16 / 56

Page 17: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Installation and requirements

Installation

Sympa 6.2.16PostgreSQL 9.4PostfixNginx

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 17 / 56

Page 18: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Installation and requirements

Requirements

Migration from MajordomoAuthentication AD/LDAPAutomated mailing listsListmastersAdaption of CD

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 18 / 56

Page 19: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Authentication AD/LDAP

Authentication AD/LDAP

LDAP only

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 19 / 56

Page 20: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Authentication AD/LDAP

Authentication AD/LDAP

ldapregexp .*host ldap.htwk-leipzig.de:636bind_dn [email protected]_password nevairbesuffix dc=htwk-leipzig,dc=deget_dn_by_uid_filter (uid=[sender])get_dn_by_email_filter(&(objectcategory=person)(mail=[sender])(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

email_attribute mailscope subuse_tls ldapsca_file /etc/ssl/certs/htwk-chain.pemca_verify required

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 20 / 56

Page 21: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Automated mailing lists

Automated mailing lists

LDAP queriesList templates

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 21 / 56

Page 22: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Automated mailing lists

LDAP query for specific seminar groups

(&(objectcategory=person)(extensionAttribute3=08FOO15)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 22 / 56

Page 23: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Automated mailing lists

Get all seminar groups

(&(objectcategory=person)(extensionAttribute3=*)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 23 / 56

Page 24: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Automated mailing lists

LDAP with Perl

Net::LDAPNet::LDAP::Control

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 24 / 56

Page 25: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Automated mailing lists

LDAP with Perl

# apply page and sort controls$page = Net::LDAP::Control::Paged->new( size => 500 );$sort = Net::LDAP::Control::Sort->new( order => "cn" );

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 25 / 56

Page 26: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Automated mailing lists

Adjust list names

# replace / and ä ö ü ßuse Encode 'decode';use Lingua::DE::ASCII 'to_ascii';

$group =~ s/\//_/g;$group = lc( to_ascii( decode( 'UTF-8', $attribute ) ) );

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 26 / 56

Page 27: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Automated mailing lists

List creation

List directoryList from templateSync subscribersUpdate email aliases

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 27 / 56

Page 28: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Adaption of CD

Adaption of CD

Title and Logologo_html_definition<a title="HTWK home" href="http://www.htwk-leipzig.de/"><img alt="HTWK logo" src="/sympa/icons/htwk-logo.svg"></a>CSS templateweb_tt2/css.tt2Header templateweb_tt2/header.tt2

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 28 / 56

Page 29: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Problems

Synchronisation problem

lots of lists at the same timeLDAP/AD server error

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 29 / 56

Page 30: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Problems

Synchronisation problem

ttl 3 hoursrandom 0-59 minutes

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 30 / 56

Page 31: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Sympa in production Problems

Caching problem

stale dataowners, moderatorspermissions

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 31 / 56

Page 32: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Integration

Integration

AuthenticationData Sources

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 32 / 56

Page 33: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Integration Authentication

Authentication

LDAPCASSSOTLSShibbolet

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 33 / 56

Page 34: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Integration Data Sources

Data Sources

LDAPSQLSympa ListFile

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 34 / 56

Page 35: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Integration Data Sources

Data Sources

SubscribersModeratorsOwners

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 35 / 56

Page 36: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Integration Data Sources

Data Sources

Update in regular intervals (ttl, distribution_ttl)Marker for included recordsUser can unsubscribe

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 36 / 56

Page 37: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Integration Data Sources

Data Sources

include_file /home/sympa/subscribers.txt

[email protected] Test [email protected] Foo [email protected]

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 37 / 56

Page 38: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features

Features

PersonalizationProtectionHierarchyScenariosPlugins

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 38 / 56

Page 39: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Personalization

Enable personalization

Web interface: Sending/receiving setupList config: merge_feature on

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 39 / 56

Page 40: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Personalization

Example

<p>Welcome to our great workshop, [% user.gecos %]!</p>

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 40 / 56

Page 41: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Personalization

Example

<p>Welcome to our great workshop, Stefan Hornburg!</p>

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 41 / 56

Page 42: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Personalization

Add custom attributes

custom_attributeid levelname Your game leveltype integer

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 42 / 56

Page 43: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Personalization

Add custom attributes

<p>Welcome to our great workshop, [% user.gecos %]

</p><p>Your game level is [% user.custom_attribute.level.value %].

</p>

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 43 / 56

Page 44: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Personalization

Add custom attributes

<p>Welcome to our great workshop, Stefan Hornburg!

</p><p>Your game level is 25.

</p>

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 44 / 56

Page 45: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Protection

Protection

DKIMDMARC / ARCS/MIME

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 45 / 56

Page 46: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Hierarchy

Hierarchy

ServerVirtual hosts (Robots)List

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 46 / 56

Page 47: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Features Plugins

Plugins

Template pluginsModlist/Whitelist pluginDistribution notification pluginmessage_hookpost_archive DistributionNotification

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 47 / 56

Page 48: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Challenges

Challenges

Reverse DNSSPF/DKIMBouncesAddress verificationLog parsing (Sisimai)Blocking

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 48 / 56

Page 49: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Challenges Vetting email addresses

Vetting email addresses

my $validator = Email::Valid->new(-mxcheck => 1,

);

unless ($validator->address($email)) {warn "Email $email invalid: " .

$validator->details . "\n";}

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 49 / 56

Page 50: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Future Projects

Projects

REST / GraphQL APIContainerAnsibleArchive search

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 50 / 56

Page 51: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Future API

API

SOAP APIREST APIGraphQL APIDBIx::Class schema

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 51 / 56

Page 52: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Future Container

Container

SympaDatabase (PostgreSQL, MySQL, ...)MTA / IMAP / getmailWeb frontend

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 52 / 56

Page 53: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Future Ansible

Ansible

ProvisioningTesting

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 53 / 56

Page 54: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Future Ansible

Archive Search

setup Elasticsearch and index structurewrite indexer that parses the emails in the archivesetup very simple website for searchauthentication for website is list membership

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 54 / 56

Page 55: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Finish Questions

Questions

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 55 / 56

Page 56: Sympa Mailinglist Manager - LinuXia · Sympa basics List creation templates Extract of newsletter configuration visibility noconceal send newsletter process_archive on archive web_access

Finish The end

The end

Stefan Hornburg Sympa Mailinglist Manager GP/RW Erlangen 4th March 2020 56 / 56