<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.hostsharing.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Apc00</id>
	<title>Hostsharing Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hostsharing.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Apc00"/>
	<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spezial:Beitr%C3%A4ge/Apc00"/>
	<updated>2026-04-25T20:08:53Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Verwalten_der_Zonendaten&amp;diff=5116</id>
		<title>Verwalten der Zonendaten</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Verwalten_der_Zonendaten&amp;diff=5116"/>
		<updated>2020-04-15T10:23:35Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Expansion der Platzhalter */ Da hat {HEADER} gefehlt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Kerndoku|https://doc.hostsharing.net/users/administration/zonefile/index.html}}&lt;br /&gt;
&lt;br /&gt;
Das Zonenfile für eine Domain enthält die Konfiguration des Domain Name Service ([[DNS]]), d.h. der [[Nameserver]] der Domain. Es wird hinterlegt, welche Hostnamen innerhalb der Domain existieren und auf welche IP-Adressen diese zeigen. Außerdem wird hierüber auch gesteuert, an welches System Mails für die Domain geliefert werden sollen. Für einfache und unkomplizierte Änderungen bitte in [[Simple Zonefile Howto]] schauen.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|rot|Achtung|Aufgrund der zentralen Bedeutung sollten Änderungen nur mit Vorsicht vorgenommen werden, da eine fehlerhafte Einstellung dazu führen kann, dass die Webseite nicht mehr im Internet abgerufen werden kann oder Mails verloren gehen!}}&lt;br /&gt;
&lt;br /&gt;
== Aktives Zonefile ==&lt;br /&gt;
&lt;br /&gt;
Die gerade aktive Konfiguration einer Domain example.com ist in /etc/bind/pri.example.com zu finden ([[Zonefile]]).&lt;br /&gt;
&lt;br /&gt;
Im Standardfall sieht es vollständig expandiert wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;example.com. IN SOA h00.hostsharing.net. hostmaster.hostsharing.net. (&lt;br /&gt;
                1303649373      ; serial secs since Jan 1 1970&lt;br /&gt;
                6H              ; refresh (&amp;gt;=10000)&lt;br /&gt;
                1H              ; retry (&amp;gt;=1800)&lt;br /&gt;
                1W              ; expire&lt;br /&gt;
                1H              ; minimum&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
example.com.    IN      NS      dns1.hostsharing.net.&lt;br /&gt;
example.com.    IN      NS      dns2.hostsharing.net.&lt;br /&gt;
example.com.    IN      NS      dns3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
example.com.    IN      MX      30 mailin1.hostsharing.net.&lt;br /&gt;
example.com.    IN      MX      30 mailin2.hostsharing.net.&lt;br /&gt;
example.com.    IN      MX      30 mailin3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
example.com.    IN      A       83.223.95.160&lt;br /&gt;
example.com.    IN      AAAA    2a01:37:1000::53df:5fa0:0&lt;br /&gt;
&lt;br /&gt;
example.com.    IN      TXT     &amp;quot;v=spf1 include:spf.hostsharing.net ?all&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*.example.com.  IN      MX      30 mailin1.hostsharing.net.&lt;br /&gt;
*.example.com.  IN      MX      30 mailin2.hostsharing.net.&lt;br /&gt;
*.example.com.  IN      MX      30 mailin3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
*.example.com.  IN      A       83.223.95.160&lt;br /&gt;
*.example.com.  IN      AAAA    2a01:37:1000::53df:5fa0:0&lt;br /&gt;
&lt;br /&gt;
*.example.com.  IN      TXT     &amp;quot;v=spf1 include:spf.hostsharing.net ?all&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logfile und Kontrolle==&lt;br /&gt;
&lt;br /&gt;
Die Logfiles des Nameservers sind im Verzeichnis /var/log/named einsehbar. Das aktuelle Log wird unter dem Namen named.log angelegt. Dieses wird beim Neustart des DNS-Servers immer neu angelegt und zeigt bei einer erfolgreichen Änderung etwa folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
  Oct 11 18:32:21.400 info: zone example.org/IN: loaded serial 1065889567&lt;br /&gt;
  Oct 11 18:32:21.435 info: zone example.org/IN: sending notifies (serial 1065889567)&lt;br /&gt;
  Oct 11 18:32:21.755 info: client 213.133.116.2#57100: transfer of &#039;example.org/IN&#039;: &lt;br /&gt;
  AXFR-style IXFR started&lt;br /&gt;
  Oct 11 18:32:22.264 info: client 62.75.149.27#45282: transfer of &#039;example.org/IN&#039;: &lt;br /&gt;
  AXFR-style IXFR started&lt;br /&gt;
&lt;br /&gt;
Die Zeilen bedeuten jeweils:&lt;br /&gt;
&lt;br /&gt;
* Das geänderte Zonefile wurde vom DNS-Server erfolgreich geladen&lt;br /&gt;
* Der lokale Server sendet eine Benachrichtigung an die Secondaries, damit diese die Änderung ebenfalls übernehmen können.&lt;br /&gt;
&lt;br /&gt;
Tippfehler oder falsche Angaben im Zonefile werden hier ebenfalls gemeldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  -------- Original-Nachricht --------&lt;br /&gt;
  Betreff: [Global] DNS Zonenfile Änderungen&lt;br /&gt;
  Datum: Thu, 4 Mar 2010 08:30:34 +0100&lt;br /&gt;
  &lt;br /&gt;
  Moin Moin,&lt;br /&gt;
  &lt;br /&gt;
  aus gegebenem Anlass: Immer wieder kommt es vor, dass jemand sein&lt;br /&gt;
  Zonenfile ändert, und es (scheinbar) funktioniert. Tage oder Wochen&lt;br /&gt;
  später dann sind die Domains nicht mehr erreichbar und es heißt &amp;quot;in den&lt;br /&gt;
  letzten ... Tagen/Wochen habe ich aber gar nichts mehr geändert&amp;quot;. Das mag&lt;br /&gt;
  auch gut sein - ist mir auch selbst schon passiert, gerade wenn es um&lt;br /&gt;
  &amp;quot;mal eben schnell noch ... &amp;quot; ging.&lt;br /&gt;
  &lt;br /&gt;
  Nur ist der Fehler dann aber schon vor Tagen/Wochen passiert, und solange&lt;br /&gt;
  die Datensätze nicht abgelaufen (expired) sind, sind sie - die alten -&lt;br /&gt;
  noch im DNS System vorhanden. Die neuen aber, die aus der o.g. Änderung,&lt;br /&gt;
  sind bei einem Fehler im Zonenfile nie ins DNS System hinein gekommen!&lt;br /&gt;
  &lt;br /&gt;
  Was also tun? Zunächst kann man nach einer Änderung in einer&lt;br /&gt;
  Shell beobachten, ob es zu Fehlermeldungen kommt:&lt;br /&gt;
  &lt;br /&gt;
  tail -f /var/log/named/named.log &lt;br /&gt;
  &lt;br /&gt;
  oder ggf nur Zeilen, in denen die eigene Domain (z.B. example.com)&lt;br /&gt;
  vorkommt:&lt;br /&gt;
  &lt;br /&gt;
  tail -f /var/log/named/named.log | grep example.com&lt;br /&gt;
  &lt;br /&gt;
  Diese Log-Datei ist daher genau aus diese Grunde auch auf dem&lt;br /&gt;
  Server lesbar.&lt;br /&gt;
  &lt;br /&gt;
  Auch sollte die in den DNS-Servern befindliche Seriennummer mit der&lt;br /&gt;
  aktuellen in der Zonendatei verglichen werden:&lt;br /&gt;
  &lt;br /&gt;
  dig -t SOA @dns1 example.com | grep &#039;^example.com.*SOA&#039; | awk &#039;{ print $7 }&#039;&lt;br /&gt;
  &lt;br /&gt;
  grep serial /etc/bind/pri.example.com | awk &#039;{ print $1 }&#039;  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigenes Zonenfile ==&lt;br /&gt;
&lt;br /&gt;
Wer ein eigenes Zonefile installieren möchte, um diverse Anwendungsfälle zu realisieren (Verweise auf extern gelagerte Subdomains, Anbindung externer Server, Verwendung eigener Mailserver), kann &#039;&#039;&#039;pro Domain&#039;&#039;&#039; ein eigenes Zonefile erstellen. Dieses befindet sich im Verzeichnis &#039;&#039;&#039;~/doms/example.com/etc&#039;&#039;&#039; mit den Namen &#039;&#039;&#039;pri.example.com&#039;&#039;&#039; (example.com steht hier als Beispiel für den wahren Domainnamen). Ein Neuanlegen oder eine Änderung dieser Datei führt zu einer baldigen Änderung der Nameservereinträge für die Domain.&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|rot|Warnung!|Das nicht sachgemäße Erstellen eines eigenen Zonefiles kann zur Nichterreichbarkeit der eigenen Domain und zum Verlust von Mails führen!}}&lt;br /&gt;
&lt;br /&gt;
Eine Anleitung für die eher einfachen und oft gewünschten Änderungen findet sich in [[Simple Zonefile Howto]].&lt;br /&gt;
&lt;br /&gt;
Folgende Platzhalter können und sollten in eigenen Zonenfiles verwendet werden. Sie ermöglichen uns das Ändern der DNS-Konfiguration, ohne dass der Domain-Admin sein Zonefile anpassen muss.&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Platzhalter ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{DEFAULT_ZONEFILE} :=&lt;br /&gt;
	{HEADER}&lt;br /&gt;
	{SOA_RR}&lt;br /&gt;
	{NS_RR}&lt;br /&gt;
	{MX_RR}	&lt;br /&gt;
	{A_RR}&lt;br /&gt;
	{WILDCARD_MX_RR}&lt;br /&gt;
	{WILDCARD_A_RR}&lt;br /&gt;
&lt;br /&gt;
{HEADER} :=&lt;br /&gt;
	$TTL {TTL}&lt;br /&gt;
&lt;br /&gt;
{SOA_RR} :=&lt;br /&gt;
	{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (&lt;br /&gt;
		{SIO}		; serial secs since Jan 1 1970&lt;br /&gt;
		{REFRESH}	; refresh (&amp;gt;=10000)&lt;br /&gt;
		{RETRY}		; retry (&amp;gt;=1800)&lt;br /&gt;
		{EXPIRE}	; expire&lt;br /&gt;
		{MINIMUM}	; minimum&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
{NS_RR} :=&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	NS	{DNS1_HOSTNAME}.&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	NS	{DNS2_HOSTNAME}.&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	NS	{DNS3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{MX_RR} :=&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	MX	30 {MX1_HOSTNAME}.&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	MX	30 {MX2_HOSTNAME}.&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	MX	30 {MX3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{A_RR} :=&lt;br /&gt;
	{DOM_HOSTNAME}.		IN	A	{DOM_IPNUMBER}&lt;br /&gt;
&lt;br /&gt;
{WILDCARD_MX_RR} :=&lt;br /&gt;
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX1_HOSTNAME}.&lt;br /&gt;
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX2_HOSTNAME}.&lt;br /&gt;
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{WILDCARD_A_RR} :=&lt;br /&gt;
	*.{DOM_HOSTNAME}.	IN	A	{DOM_IPNUMBER}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atomare Platzhalter ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{TTL} :=		6H&lt;br /&gt;
{SOA_HOSTNAME} :=	&amp;lt;HIVE&amp;gt;.hostsharing.net&lt;br /&gt;
{SOA_EMAIL}:=		hostmaster.hostsharing.net&lt;br /&gt;
{SIO} :=		&amp;lt;SEKUNDEN&amp;gt;&lt;br /&gt;
{REFRESH} :=		6H&lt;br /&gt;
{RETRY} :=		1H&lt;br /&gt;
{EXPIRE} :=		1W&lt;br /&gt;
{MINIMUM} :=		1H&lt;br /&gt;
&lt;br /&gt;
{DNS1_HOSTNAME} :=	dns1.hostsharing.net&lt;br /&gt;
{DNS2_HOSTNAME} :=	dns2.hostsharing.net&lt;br /&gt;
{DNS3_HOSTNAME} :=	dns3.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
{MX1_HOSTNAME} :=	mailin1.hostsharing.net&lt;br /&gt;
{MX2_HOSTNAME} :=	mailin2.hostsharing.net&lt;br /&gt;
{MX3_HOSTNAME} :=	mailin3.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME} :=	&amp;lt;FQDN&amp;gt;&lt;br /&gt;
{DOM_IPNUMBER} := 	&amp;lt;IP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei stehen&lt;br /&gt;
* &amp;lt;Sekunden&amp;gt; für die Anzahl der Sekunden, welche seit dem 01.01.1970 vergangen sind&lt;br /&gt;
* &amp;lt;FQDN&amp;gt; für den vollständigen, qualifizierten Domainnamen der Domain&lt;br /&gt;
* &amp;lt;IP&amp;gt; für die der Domain zugewiesene IP-Adresse&lt;br /&gt;
&lt;br /&gt;
Diese Werte werden von Hostsharing verwaltet.&lt;br /&gt;
&lt;br /&gt;
=== Expansion der Platzhalter ===&lt;br /&gt;
&lt;br /&gt;
Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONFILE} wird folgermaßen expandiert.&lt;br /&gt;
&lt;br /&gt;
Zunächst werden die komplexen Platzhalter ersetzt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL {TTL}&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (&lt;br /&gt;
	{SIO}		; serial secs since Jan 1 1970&lt;br /&gt;
	{REFRESH}	; refresh (&amp;gt;=10000)&lt;br /&gt;
	{RETRY}		; retry (&amp;gt;=1800)&lt;br /&gt;
	{EXPIRE}	; expire&lt;br /&gt;
	{MINIMUM}	; minimum&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME}.		IN	NS	{DNS1_HOSTNAME}.&lt;br /&gt;
{DOM_HOSTNAME}.		IN	NS	{DNS2_HOSTNAME}.&lt;br /&gt;
{DOM_HOSTNAME}.		IN	NS	{DNS3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME}.		IN	MX	30 {MX1_HOSTNAME}.&lt;br /&gt;
{DOM_HOSTNAME}.		IN	MX	30 {MX2_HOSTNAME}.&lt;br /&gt;
{DOM_HOSTNAME}.		IN	MX	30 {MX3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
{DOM_HOSTNAME}.		IN	A	{DOM_IPNUMBER}&lt;br /&gt;
&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	MX	30 {MX1_HOSTNAME}.&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	MX	30 {MX2_HOSTNAME}.&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	MX	30 {MX3_HOSTNAME}.&lt;br /&gt;
&lt;br /&gt;
*.{DOM_HOSTNAME}.	IN	A	{DOM_IPNUMBER}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend werden die atomaren Platzhalter ersetzt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL 6H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FQDN&amp;gt;. IN SOA &amp;lt;HIVE&amp;gt;.hostsharing.net. hostmaster.hostsharing.net. (&lt;br /&gt;
	&amp;lt;SEKUNDEN&amp;gt;	; serial secs since Jan 1 1970&lt;br /&gt;
	6H		; refresh (&amp;gt;=10000)&lt;br /&gt;
	1H		; retry (&amp;gt;=1800)&lt;br /&gt;
	1W		; expire&lt;br /&gt;
	1H		; minimum&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	NS	dns1.hostsharing.net.&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	NS	dns2.hostsharing.net.&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	NS	dns3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	MX	30 mail1.hostsharing.net.&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	MX	30 mail2.hostsharing.net.&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	MX	30 mail3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FQDN&amp;gt;.		IN	A	&amp;lt;IP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*.&amp;lt;FQDN&amp;gt;.	IN	MX	30 mail1.hostsharing.net.&lt;br /&gt;
*.&amp;lt;FQDN&amp;gt;.	IN	MX	30 mail2.hostsharing.net.&lt;br /&gt;
*.&amp;lt;FQDN&amp;gt;.	IN	MX	30 mail3.hostsharing.net.&lt;br /&gt;
&lt;br /&gt;
*.&amp;lt;FQDN&amp;gt;.	IN	A	&amp;lt;IP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Das Zonefile deaktivieren/zurücksetzen ==&lt;br /&gt;
&lt;br /&gt;
In ~/doms/example.com/etc das vorhandene Zonefile (pri.example.com) komplett leeren (ist dann 0 Bytes groß). Dann kommt der Robot vorbei, löscht pri.example.com und setzt alles auf Standardwerte zurück.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Zonefile]]&lt;br /&gt;
[[Kategorie:DNS]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4996</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4996"/>
		<updated>2019-10-14T06:44:45Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Gliederung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Vorab: Die Wahl von Mailman 2 ==&lt;br /&gt;
&lt;br /&gt;
Mailman 2 hängt von Python 2.7 ab und wird damit voraussichtlich nur noch eine begrenzte Nutzungsdauer haben. Mailman 3 ist jetzt verfügbar (siehe [[Mailman_3_installieren]]), aber deutlich schwerer und komplexer im Betrieb. Es gibt auch weniger leistungsfähige Software, um E-Mail-Verteiler zu betreiben, wie beispielsweise mlmmj. Für eine Diskussion der Situation im Oktober 2019, siehe das HS-Support-Archiv ab [https://lists.hostsharing.net/archiv/support/2019-October/067243.html hier.]&lt;br /&gt;
&lt;br /&gt;
== Mailman 2 installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer, die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
=== Unter welchem Account installieren? ===&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/listen.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den 2er-Versionen von Mailman (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00): &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/listen.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@listen.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@listen.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird listen.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. listen.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin (xyz00-listen) statt Paketadmin (xyz00): https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin (xyz00-listen): &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de/, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4995</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4995"/>
		<updated>2019-10-14T06:43:38Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Warnung zur begrenzten Lebensdauer von MM2 vorne hinzugefügt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mailman 2 installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer, die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
=== Vorne weg: Die Wahl von Mailman 2 ===&lt;br /&gt;
&lt;br /&gt;
Mailman 2 hängt von Python 2.7 ab und wird damit voraussichtlich nur noch eine begrenzte Nutzungsdauer haben. Mailman 3 ist jetzt verfügbar (siehe [[Mailman_3_installieren]]), aber deutlich schwerer und komplexer im Betrieb. Es gibt auch weniger leistungsfähige Software, um E-Mail-Verteiler zu betreiben, wie beispielsweise mlmmj. Für eine Diskussion der Situation im Oktober 2019, siehe das HS-Support-Archiv ab [https://lists.hostsharing.net/archiv/support/2019-October/067243.html hier.]&lt;br /&gt;
&lt;br /&gt;
=== Unter welchem Account installieren? ===&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/listen.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den 2er-Versionen von Mailman (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00): &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/listen.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@listen.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@listen.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird listen.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. listen.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin (xyz00-listen) statt Paketadmin (xyz00): https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin (xyz00-listen): &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de/, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4842</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4842"/>
		<updated>2019-03-14T13:09:11Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Sourcen besorgen und entpacken */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/listen.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den 2er-Versionen von Mailman (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/listen.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@listen.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@listen.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird listen.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. listen.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4841</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4841"/>
		<updated>2019-03-14T13:08:30Z</updated>

		<summary type="html">&lt;p&gt;Apc00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/listen.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/listen.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@listen.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@listen.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird listen.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. listen.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4840</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4840"/>
		<updated>2019-03-14T13:07:31Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Mailman-Icons in die Domains kopieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/listen.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/listen.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4839</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4839"/>
		<updated>2019-03-14T13:07:15Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Einen User und eine Domain anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/listen.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4838</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4838"/>
		<updated>2019-03-14T13:06:45Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Nur example.com ist als Beispielsdomainname freigegeben.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.com mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.com/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.com/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.com/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.com, zweite.listendomain.com)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.com/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.com/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.com/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.com/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.com/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.com/cgi-bin/mailman, sondern auch unter https://listen.example.com  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.com/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.com/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.com/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.com/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4837</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4837"/>
		<updated>2019-03-14T13:01:41Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Administration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man als Administrator der neuen Mailman-Installation die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. Die Liste &amp;quot;mailman&amp;quot; kann aber unter https://listen.example.de/mailman/admin/mailman verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
Die Hauptseite der Mailman-Web-Verwaltung ist in unserem Beispiel (mit den oben angegebenen Rewrite-Anweisungen in der Datei .htaccess) https://listen.example.de/mailman/admin/. Diese Seite enthält Links zu den bisher eingerichteten Mailinglisten (außer &amp;quot;mailman&amp;quot;) und einen Link, um neue Mailinglisten anzulegen (https://listen.example.de/mailman/create). Das Anlegen einer neuen Mailingliste geschieht entweder über diesen Link oder (wie oben) in der Shell mit dem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist &amp;lt;Listenname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen müssen zusätzlich die E-Mail-Adressen und die .forward-Dateien wie bei dem Einrichten der Liste &amp;quot;mailman&amp;quot; nach Verfahren im obigen Abschnitt angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Verwaltung der Mailinglisten im Alltag, d.h. den Umgang mit Bounces, Spam, Abonnenten usw., siehe u.a. die [https://wiki.list.org/ Mailman-Wiki].&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4836</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4836"/>
		<updated>2019-03-13T16:41:59Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Email Adressen einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # .forward-Dateien für einen Verteiler unter Mailman einrichten.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Aufruf: $0 Listenname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Diesen Befehl vom Home-Verzeichnis aus aufrufen.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4835</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4835"/>
		<updated>2019-03-13T16:39:33Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Email Adressen einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/addforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Add forward files for mailman lists.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Run this script from your home directory.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Der Skript muß natürlich als ausführbar gekennzeichnet werden:&lt;br /&gt;
&lt;br /&gt;
  ~$ chmod u+x bin/addforwards&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4834</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4834"/>
		<updated>2019-03-13T16:36:27Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Einen User und eine Domain anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|SSH]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman-subscribe&#039;&#039;&#039; verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/createforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Add forward files for mailman lists.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Run this script from your home directory.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4833</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4833"/>
		<updated>2019-03-13T16:36:08Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Einen User und eine Domain anlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit [[Login_mit_SSH|ssh]] an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman-subscribe&#039;&#039;&#039; verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/createforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Add forward files for mailman lists.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Run this script from your home directory.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4832</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4832"/>
		<updated>2019-03-13T16:34:41Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Email Adressen einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit ssh an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;listen.example.de&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman-subscribe&#039;&#039;&#039; verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/createforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Add forward files for mailman lists.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Run this script from your home directory.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung dieses Skripts um die hsscript-Befehle wird dem Leser als Aufgabe überlassen.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4831</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4831"/>
		<updated>2019-03-13T16:29:11Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Email Adressen einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit ssh an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, werden  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt.)&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:]&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge &amp;quot;.forward+&amp;quot; gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman-subscribe&#039;&#039;&#039; verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel &amp;quot;xyz00-listen+mailman-subscribe&amp;quot; wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten &amp;quot;subscribe mailman&amp;quot; übergeben.&lt;br /&gt;
&lt;br /&gt;
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste &amp;quot;mailman&amp;quot; eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien &amp;quot;mailman&amp;quot; durch den Namen der Mailingliste ersetzt, jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)&lt;br /&gt;
&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/createforwards mit folgendem Inhalt zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Add forward files for mailman lists.&lt;br /&gt;
 #&lt;br /&gt;
 if [ &amp;quot;$1&amp;quot; = &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;$2&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Syntax: $0 listname\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;`pwd`&amp;quot; != &amp;quot;`echo ~`&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Run this script from your home directory.\n&amp;quot; &lt;br /&gt;
    exit&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman post $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman admin $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-admin&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman bounces $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-bounces&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman confirm $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-confirm&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman join $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-join&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman leave $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-leave&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman owner $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-owner&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman request $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-request&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman subscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-subscribe&lt;br /&gt;
 echo &amp;quot;\&amp;quot;|/home/pacs/apc00/users/lists/mailman/mail/mailman unsubscribe $1\&amp;quot;&amp;quot; &amp;gt; .forward+$1-unsubscribe&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Autorenportal&amp;diff=4828</id>
		<title>Autorenportal</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Autorenportal&amp;diff=4828"/>
		<updated>2019-03-08T15:46:02Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Für den Leser schreiben! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Hostsharing-Wiki ist ein gemeinsames Projekt der Hostsharing-Mitglieder, in dem wir die Dokumentation der Dienste von Hostsharing überarbeiten und auf den aktuellen Stand bringen möchten. Auf dieser Seite findest du Informationen dazu, wie du dich daran beteiligen kannst.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmelden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Wiki verwendet den Single-Sign-On-Dienst von Hostsharing, sodass Du Dich im  Wiki mit jedem gültigen [[User]] (Benutzernamen) eines Servers von Hostsharing anmelden kannst. Du kannst Dir natürlich für die Nutzung des Wikis einen eigenen [[User]] in einem Deiner Pakete anlegen, zum Beispiel xyz00-wiki oder xyz00-hsdoku.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Benutzereinstellungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nachdem du dich im Wiki angemeldet hast, ist es sinnvoll, wenn du zunächst deine Benutzereinstellungen anpasst (der Link [[Spezial:Einstellungen | Einstellungen]] - nur sichtbar, wenn Du angemeldet bist). Mindestens deine E-Mail-Adresse solltest du eintragen, denn dann kannst du Seiten im Wiki beobachten und Nachrichten bekommen, wenn eine von dir beobachtete Seite geändert wurde.&lt;br /&gt;
&lt;br /&gt;
Du solltest dich außerdem auf der Hostsharing-Mailingliste (nicht öffentliche Liste) [https://lists.hostsharing.net/mailman/listinfo/website/ website@hostsharing.net] anmelden. Dort diskutieren wir über die Weiterentwicklung der Dokumentation.&lt;br /&gt;
&lt;br /&gt;
== Wo ist Arbeit nötig? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em;font-style:italic&amp;quot;&amp;gt;Die wichtigsten Links: [[:Kategorie:Baustelle|Baustelle]]n, [[Hostsharing_Wiki:Wunschliste Installationsanleitungen|Wunschliste Installationsanleitungen]], [[Ideen für das Wiki]], [[Fehler im Wiki]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ganz konkret kannst du zum Beispiel schauen, welche Seiten hier im Wiki als [[:Kategorie:Baustelle|Baustelle]] gekennzeichnet sind und diese überarbeiten. Oder du erstellst eine ganz neue Dokumentation zu einem Thema.&lt;br /&gt;
&lt;br /&gt;
Natürlich kannst du auch als Benutzer die Dokumentation lesen und in der Diskussion der entsprechenden Seite darauf hinweisen, wo aus deiner Sicht Verbesserungen notwendig sind. Um eine Seite als Baustelle zu kennzeichnen, trage einfach folgendes ganz am Anfang der Seite ein:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;{{Baustelle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang der Seite erscheint dann ein entsprechender Hinweis und die Seite wird in die [[:Kategorie:Baustelle|Liste der Baustellen]] aufgenommen.&lt;br /&gt;
&lt;br /&gt;
== Konventionen ==&lt;br /&gt;
&lt;br /&gt;
Wenn du an der Dokumentation arbeitest, solltest du unsere [[Hilfe:Hostsharing_Wiki_Konventionen|Konventionen]] und [[Hilfe:Guter_Stil|Hinweise zu gutem Stil]] beachten.&lt;br /&gt;
&lt;br /&gt;
== Umgang mit der Wiki-Software ==&lt;br /&gt;
&lt;br /&gt;
Wir verwenden als Software [http://www.mediawiki.org/ MediaWiki]. Nachfolgend einige Links auf Hinweise dazu, wie du im Wiki Texte formatierst und Links anlegst. Gefahrlos ausprobieren kannst du die Wiki-Funktionen auf der Seite [[Sandkasten]], diese ist explizit zum Experimentieren gedacht.&lt;br /&gt;
&lt;br /&gt;
* [[Hilfe:Textgestaltung|Textformatierung im Wiki]]&lt;br /&gt;
* [[Hilfe:Link|Links anlegen]]&lt;br /&gt;
&lt;br /&gt;
== Für den Leser schreiben! ==&lt;br /&gt;
&lt;br /&gt;
Entgegen der langjährigen Tradition in Akademie und Technik, schreiben wir hier vor allem für diejenigen Leser*innen, die noch nicht das wissen, was wir als Autoren wissen. Deshalb immer beim Schreiben von Dokumentation daran denken, daß der Leser womöglich zum allerersten Mal eine Einrichtung vornehmen will, die uns quasi selbstverständlich ist. Das bedeutet, daß die Anleitungen in diesem Wiki mit &#039;&#039;&#039;genauer Terminologie&#039;&#039;&#039; und ohne allzuviele Abkürzungen &#039;&#039;&#039;ausführlich&#039;&#039;&#039; sagen sollen, was der Leser machen muß.&lt;br /&gt;
&lt;br /&gt;
*Falsch: &amp;quot;Dann über die Shell die entsprechenden Rewrite-Zeilen in die .htaccess einfügen.&amp;quot;&lt;br /&gt;
*Besser: &amp;quot;Dann mit ssh als Paketuser xyz00-username an example.com anmelden und folgende Zeilen in die Datei ~/doms/example.com/htdocs-ssl/.htaccess einfügen: ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Hilfe]]&lt;br /&gt;
[[Kategorie:Hostsharing Wiki]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Autorenportal&amp;diff=4827</id>
		<title>Autorenportal</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Autorenportal&amp;diff=4827"/>
		<updated>2019-03-08T15:45:19Z</updated>

		<summary type="html">&lt;p&gt;Apc00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Hostsharing-Wiki ist ein gemeinsames Projekt der Hostsharing-Mitglieder, in dem wir die Dokumentation der Dienste von Hostsharing überarbeiten und auf den aktuellen Stand bringen möchten. Auf dieser Seite findest du Informationen dazu, wie du dich daran beteiligen kannst.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmelden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Wiki verwendet den Single-Sign-On-Dienst von Hostsharing, sodass Du Dich im  Wiki mit jedem gültigen [[User]] (Benutzernamen) eines Servers von Hostsharing anmelden kannst. Du kannst Dir natürlich für die Nutzung des Wikis einen eigenen [[User]] in einem Deiner Pakete anlegen, zum Beispiel xyz00-wiki oder xyz00-hsdoku.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Benutzereinstellungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nachdem du dich im Wiki angemeldet hast, ist es sinnvoll, wenn du zunächst deine Benutzereinstellungen anpasst (der Link [[Spezial:Einstellungen | Einstellungen]] - nur sichtbar, wenn Du angemeldet bist). Mindestens deine E-Mail-Adresse solltest du eintragen, denn dann kannst du Seiten im Wiki beobachten und Nachrichten bekommen, wenn eine von dir beobachtete Seite geändert wurde.&lt;br /&gt;
&lt;br /&gt;
Du solltest dich außerdem auf der Hostsharing-Mailingliste (nicht öffentliche Liste) [https://lists.hostsharing.net/mailman/listinfo/website/ website@hostsharing.net] anmelden. Dort diskutieren wir über die Weiterentwicklung der Dokumentation.&lt;br /&gt;
&lt;br /&gt;
== Wo ist Arbeit nötig? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em;font-style:italic&amp;quot;&amp;gt;Die wichtigsten Links: [[:Kategorie:Baustelle|Baustelle]]n, [[Hostsharing_Wiki:Wunschliste Installationsanleitungen|Wunschliste Installationsanleitungen]], [[Ideen für das Wiki]], [[Fehler im Wiki]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ganz konkret kannst du zum Beispiel schauen, welche Seiten hier im Wiki als [[:Kategorie:Baustelle|Baustelle]] gekennzeichnet sind und diese überarbeiten. Oder du erstellst eine ganz neue Dokumentation zu einem Thema.&lt;br /&gt;
&lt;br /&gt;
Natürlich kannst du auch als Benutzer die Dokumentation lesen und in der Diskussion der entsprechenden Seite darauf hinweisen, wo aus deiner Sicht Verbesserungen notwendig sind. Um eine Seite als Baustelle zu kennzeichnen, trage einfach folgendes ganz am Anfang der Seite ein:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;{{Baustelle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang der Seite erscheint dann ein entsprechender Hinweis und die Seite wird in die [[:Kategorie:Baustelle|Liste der Baustellen]] aufgenommen.&lt;br /&gt;
&lt;br /&gt;
== Konventionen ==&lt;br /&gt;
&lt;br /&gt;
Wenn du an der Dokumentation arbeitest, solltest du unsere [[Hilfe:Hostsharing_Wiki_Konventionen|Konventionen]] und [[Hilfe:Guter_Stil|Hinweise zu gutem Stil]] beachten.&lt;br /&gt;
&lt;br /&gt;
== Umgang mit der Wiki-Software ==&lt;br /&gt;
&lt;br /&gt;
Wir verwenden als Software [http://www.mediawiki.org/ MediaWiki]. Nachfolgend einige Links auf Hinweise dazu, wie du im Wiki Texte formatierst und Links anlegst. Gefahrlos ausprobieren kannst du die Wiki-Funktionen auf der Seite [[Sandkasten]], diese ist explizit zum Experimentieren gedacht.&lt;br /&gt;
&lt;br /&gt;
* [[Hilfe:Textgestaltung|Textformatierung im Wiki]]&lt;br /&gt;
* [[Hilfe:Link|Links anlegen]]&lt;br /&gt;
&lt;br /&gt;
== Für den Leser schreiben! ==&lt;br /&gt;
&lt;br /&gt;
Entgegen der langjährigen Tradition in Akademie und Technik, schreiben wir hier vor allem für diejenigen Leser*innen, die noch nicht das wissen, was wir als Autoren wissen. Deshalb immer beim Schreiben von Dokumentation daran denken, daß der Leser womöglich zum allerersten Mal eine Einrichtung vornehmen wollen, die uns quasi selbstverständlich ist. Das bedeutet, daß die Anleitungen in diesem Wiki mit &#039;&#039;&#039;genauer Terminologie&#039;&#039;&#039; und ohne allzuviele Abkürzungen &#039;&#039;&#039;ausführlich&#039;&#039;&#039; sagen sollen, was der Leser machen muß.&lt;br /&gt;
&lt;br /&gt;
*Falsch: &amp;quot;Dann über die Shell die entsprechenden Rewrite-Zeilen in die .htaccess einfügen.&amp;quot;&lt;br /&gt;
*Besser: &amp;quot;Dann mit ssh als Paketuser xyz00-username an example.com anmelden und folgende Zeilen in die Datei ~/doms/example.com/htdocs-ssl/.htaccess einfügen: ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Hilfe]]&lt;br /&gt;
[[Kategorie:Hostsharing Wiki]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=E-Mail&amp;diff=4826</id>
		<title>E-Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=E-Mail&amp;diff=4826"/>
		<updated>2019-03-08T15:08:28Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Aressierung und Weiterleitungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-Links}}&lt;br /&gt;
&lt;br /&gt;
{{Baustelle}}&lt;br /&gt;
&lt;br /&gt;
{{Kerndoku|https://doc.hostsharing.net/users/administration/email/index.html}}&lt;br /&gt;
&lt;br /&gt;
Die (auch das) &#039;&#039;&#039;E-Mail&#039;&#039;&#039; (kurz &#039;&#039;Mail&#039;&#039;, von englisch &#039;&#039;electronic mail&#039;&#039;: „elektronische Post“ oder „elektronischer Brief“), manchmal als &#039;&#039;&#039;E-Post&#039;&#039;&#039; oder &#039;&#039;&#039;E-Brief&#039;&#039;&#039; bezeichnet, ist eine auf elektronischem Weg in [[Rechnernetz|Computernetzwerken]] übertragene [[Nachricht]].&lt;br /&gt;
&lt;br /&gt;
E-Mail wird – noch vor dem [[World Wide Web]] – als wichtigster und meistgenutzter Dienst des [[Internet]]s angesehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Weitergehende Konfigurationsmöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Es können [[Mailinglisten]] eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
* IMAP Konten lassen sich mit [[ImapCopy]] zu HS kopieren.&lt;br /&gt;
&lt;br /&gt;
== E-Mail-Infrastruktur ==&lt;br /&gt;
&lt;br /&gt;
Wir nutzen [http://www.postfix.org/ Postfix] als [[Mail Transfer Agent]](MTA) bzw. Mailserver. Diese Software dient dazu, eingehende Mails den lokalen Usern des Servers zuzuordnen, an interne oder externe Server zuzustellen.&lt;br /&gt;
&lt;br /&gt;
E-Mails werden vom Mailsystem im Verzeichnis Maildir des jeweiligen User-Accounts abgelegt (der Name ist systemweit eingestellt und kann nicht verändert werden). &lt;br /&gt;
&lt;br /&gt;
Damit sind die Mails im normalen Backup enthalten und gehen auch in die Quota des Paketes ein. Das Verzeichnis wird automatisch angelegt, wenn die erste E-Mail dort abgelegt wird. &lt;br /&gt;
&lt;br /&gt;
Ist das Verzeichnis Maildir nicht angelegt, liefern E-Mail-Clients oder Webmail-Clients aufgrund des fehlenden Verzeichnisses eine Fehlermeldung. &lt;br /&gt;
Dies kann verhindert werden, indem  auf der Shell in dem entsprechenden User-Account folgender Befehl ausführt wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; maildirmake Maildir&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aressierung und Weiterleitungen ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing unterschedet zwischen E-Mail-Adresse und Mailbox.&lt;br /&gt;
&lt;br /&gt;
Eine E-Mail-Adresse gibt an, wie eine eingehende Nachricht auszuliefern ist.&lt;br /&gt;
&lt;br /&gt;
Eine Mailbox ist ein Ort, wo erhaltene E-Mails lagern, bis ein User sie lesen will,&lt;br /&gt;
typischerweise indem er mittels seiner Client-Software die Mails mit IMAP oder POP3&lt;br /&gt;
abholt und anzeigt.&lt;br /&gt;
&lt;br /&gt;
In Hostsharing hat jeder User, ob Paketadmin oder Paketuser, eine Mailbox. E-Mail-Adressen&lt;br /&gt;
können unabhängig von tatsächlichen Usern eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
=== E-Mail-Adressen ===&lt;br /&gt;
&lt;br /&gt;
Eine E-Mail-Adresse ist in Hostsharing eine&lt;br /&gt;
Kennung der üblichen Form &amp;lt;code&amp;gt;userimbreitestensinn@domain&amp;lt;/code&amp;gt;,&lt;br /&gt;
zusammen mit einer Zielangabe, das heißt, mit der Angabe, wohin eine mit dieser&lt;br /&gt;
Kennung adressierten E-Mail geliefert&lt;br /&gt;
werden soll. Bei Einrichtung einer E-Mail-Adresse in Hostsharing kann ein Ziel eine Mailbox&lt;br /&gt;
sein, oder aber eine andere E-Mail-Adresse (mit einer beliebigen Domain, ob bei Hostsharing&lt;br /&gt;
gehostet oder extern). Eine E-Mail-Adresse kann mehrere Ziele haben: dann wird die&lt;br /&gt;
eingehende Mail zur Auslieferung vervielfacht.&lt;br /&gt;
&lt;br /&gt;
Es werden n:m-Verknüpfungen zwischen E-Mail-Adressen und Mailboxen ermöglicht. Das heißt,&lt;br /&gt;
mehrere E-Mail-Adressen können dieselbe Mailbox als Ziel haben, und eine E-Mail-Adresse&lt;br /&gt;
kann mehrere Mailboxen als Ziele haben.&lt;br /&gt;
&lt;br /&gt;
=== E-Mail-Aliases ===&lt;br /&gt;
&lt;br /&gt;
Ein E-Mail-Alias ist, ähnlich wie eine E-Mail-Adresse, mit einer Angabe verbunden, wie&lt;br /&gt;
mit einer entsprechend adressierten E-Mail bei Eingang zu verfahren ist. Ein E-Mail-Alias&lt;br /&gt;
in Hostsharing ist nicht an eine bestimmte Domain gebunden, wohl aber an ein bestimmtes&lt;br /&gt;
Paket. Daher beginnen alle Aliase mit einem Pakennamen (plus Bindestrich) in der Form xyz00-... (Damit kann ein Alias gleichlautend mit der Mailbox eines Paketusers sein: in diesem Fall hat der Alias&lt;br /&gt;
Vorrang; eine so geleitete Mail wird nicht in die Mailbox geliefert, sondern entsprechend dem zum Alias gehörenden Ziel.)&lt;br /&gt;
&lt;br /&gt;
Das Ziel eines E-Mail-Alias ist &lt;br /&gt;
allerdings flexibler als das Ziel einer E-Mail-Adresse, und erlaubt beispielsweise, eingehende&lt;br /&gt;
Mails durch Programme verarbeiten zu lassen. Damit kann man unter anderem Mailverteiler flexibel definieren.&lt;br /&gt;
&lt;br /&gt;
Insgesamt kann man damit komplex E-Mail-Setups konfigurieren. E-Mail-Aliases werden deshalb als&lt;br /&gt;
Werkzeug für Administratoren angeboten; der Endverbraucher wird in der Regel keine Aliases benötigen.&lt;br /&gt;
&lt;br /&gt;
=== Formal ===&lt;br /&gt;
&lt;br /&gt;
==== E-Mail-Adresse ====&lt;br /&gt;
:Form = &amp;lt;code&amp;gt;localpart@domainpart&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:Beispiel = username@example.com&amp;lt;br /&amp;gt;&lt;br /&gt;
:Ziel = Liste von (mehreren):&lt;br /&gt;
:*    E-Mail-Adresse (intern oder extern)&lt;br /&gt;
:*    E-Mail-Alias&lt;br /&gt;
:*    Mailbox&lt;br /&gt;
&lt;br /&gt;
==== E-Mail-Alias ====&lt;br /&gt;
:Form = &amp;lt;code&amp;gt;xyz00-aliasname&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:Ziel = Liste von (mehreren):&lt;br /&gt;
:*   E-Mail-Adresse (intern oder extern)&lt;br /&gt;
:*   E-Mail-Alias&lt;br /&gt;
:*   Mailbox&lt;br /&gt;
:*   spezielle Funktion (Pipe, dateibasierter Verteiler, ...)&lt;br /&gt;
&lt;br /&gt;
==== Mailbox ====&lt;br /&gt;
:Form = &amp;lt;code&amp;gt;xyz00&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:Form = &amp;lt;code&amp;gt;xyz00-username&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
:*kann per [[POP3]] und/oder [[IMAP]] abgerufen werden&lt;br /&gt;
:*kann per [[Sieve]] gefiltert werden&lt;br /&gt;
:*kann durch .forward-Datei(en) umgelenkt werden&lt;br /&gt;
&lt;br /&gt;
=== Bemerkungen ===&lt;br /&gt;
&lt;br /&gt;
Wenn E-Mail-Alias gleich wie eine Mailbox-Bezeichnung lautet,&lt;br /&gt;
hat der Alias Vorrang. Um ankommende E-Mails dennoch in die Mailbox liefern zu lassen, &lt;br /&gt;
kann als Ziel eines Aliases die Mailbox-Bezeichnung mit vorangestelltem Backslash&lt;br /&gt;
angegeben werden (z. B. &amp;quot;\xyz00-username&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
[[HS-Mailrouting]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4825</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4825"/>
		<updated>2019-03-07T15:42:04Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Mailinglisten einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit ssh an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster &#039;&#039;&#039;muß&#039;&#039;&#039; ein Hauptverteiler (&amp;quot;site list&amp;quot;) eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen &amp;quot;mailman&amp;quot;. Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung &lt;br /&gt;
&lt;br /&gt;
 MAILMAN_SITE_LIST = &#039;sitelistname&#039;&lt;br /&gt;
&lt;br /&gt;
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Den Hauptverteiler &amp;quot;mailman&amp;quot; anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Mit dem Mailman-Befehl newlist den Verteiler anlegen:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)&lt;br /&gt;
&lt;br /&gt;
Nur dieses eine Mal für die &amp;quot;site list&amp;quot; müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Falls mailman vom Paketadmin (&amp;quot;xyz00&amp;quot;) installiert wurde:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Diese Konfigurationsdatei soll &#039;&#039;&#039;nicht&#039;&#039;&#039; auf gewöhnliche Mailinglisten anwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten ===&lt;br /&gt;
&lt;br /&gt;
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte &#039;&#039;E-Mail-Adressen&#039;&#039; des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen&#039;&#039;&#039;+&#039;&#039;&#039;&amp;lt;liste&amp;gt;[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in &#039;&#039;.forward-Dateien&#039;&#039; im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. &lt;br /&gt;
&lt;br /&gt;
Die  &#039;&#039;E-Mail-Adressen&#039;&#039; werden durch hsadmin (bzw. das Befehlszeielentool hsscript) eingerichtet; die &#039;&#039;.forward-Dateien&#039;&#039; werden durch Shell-Befehle angelegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TC continue rewrite from here --&amp;gt;&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]]: [https://doc.hostsharing.net/users/administration/hsadmin/index.html]&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser xyz00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users xyz00-listen werden anschließend entsprechende .forward-Dateien angelegt. Die Dateinamen und Inhalte dieser Dateien definieren den Aufruf von Mailman und die Aktion, die das Programm ausführen soll. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman&#039;&#039;&#039; verwendet, wenn die Adresse mailman@lists.example.com eine Mail erhält. In der .forward-Datei steht nun der Aufruf mit dem Programm, an das die Mail übergeben wird, die gewünschte Aktion und der Namen der Liste:&lt;br /&gt;
&lt;br /&gt;
   /home/pacs/xyz00/users/listen/mailman/mail/mailman [Aktion] [Listenname]&lt;br /&gt;
&lt;br /&gt;
So wird das definiert für alle Aktionen für die Liste &#039;&#039;&#039;mailman&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4824</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4824"/>
		<updated>2019-03-07T15:02:09Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Cronjobs einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit ssh an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 # Warteschlange jede Minute bearbeiten:&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen:&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.&lt;br /&gt;
&lt;br /&gt;
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:&lt;br /&gt;
&lt;br /&gt;
 47 * * * * rm -f ~/mailman/var/logs/qrunner&lt;br /&gt;
&lt;br /&gt;
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:&lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
=== Als erste Liste die &amp;quot;mailman&amp;quot; &amp;quot;site list&amp;quot; einrichten ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Neue Liste anlegen:&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
Nur für die &amp;quot;mailman site list&amp;quot;: Konfigurationsvorgaben laden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
(Diese Konfigurationsdatei nicht auf eigene Listen anwenden.)&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten === &lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin (virtusertable) und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]]: [https://doc.hostsharing.net/users/administration/hsadmin/index.html]&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser xyz00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users xyz00-listen werden anschließend entsprechende .forward-Dateien angelegt. Die Dateinamen und Inhalte dieser Dateien definieren den Aufruf von Mailman und die Aktion, die das Programm ausführen soll. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman&#039;&#039;&#039; verwendet, wenn die Adresse mailman@lists.example.com eine Mail erhält. In der .forward-Datei steht nun der Aufruf mit dem Programm, an das die Mail übergeben wird, die gewünschte Aktion und der Namen der Liste:&lt;br /&gt;
&lt;br /&gt;
   /home/pacs/xyz00/users/listen/mailman/mail/mailman [Aktion] [Listenname]&lt;br /&gt;
&lt;br /&gt;
So wird das definiert für alle Aktionen für die Liste &#039;&#039;&#039;mailman&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4823</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4823"/>
		<updated>2019-03-06T12:51:46Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Konfigurationsdatei mm_cfg.py editieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit ssh an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
(Queuebearbeitung alle Minute, löschen der Verarbeitungslogs in der 47ten Minute jeder Std.)&lt;br /&gt;
&lt;br /&gt;
Dies übernimmt die Funktion des qrunner-Dämons, der bei Mailman normalerweise laufen würde.&lt;br /&gt;
Das Logfile wird gelöscht, da es sonst sehr schnell sehr groß wird.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die Cronjobs aus ~/mailman/cron/crontab.in eingefügt werden. &lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
=== Als erste Liste die &amp;quot;mailman&amp;quot; &amp;quot;site list&amp;quot; einrichten ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Neue Liste anlegen:&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
Nur für die &amp;quot;mailman site list&amp;quot;: Konfigurationsvorgaben laden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
(Diese Konfigurationsdatei nicht auf eigene Listen anwenden.)&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten === &lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin (virtusertable) und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]]: [https://doc.hostsharing.net/users/administration/hsadmin/index.html]&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser xyz00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users xyz00-listen werden anschließend entsprechende .forward-Dateien angelegt. Die Dateinamen und Inhalte dieser Dateien definieren den Aufruf von Mailman und die Aktion, die das Programm ausführen soll. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman&#039;&#039;&#039; verwendet, wenn die Adresse mailman@lists.example.com eine Mail erhält. In der .forward-Datei steht nun der Aufruf mit dem Programm, an das die Mail übergeben wird, die gewünschte Aktion und der Namen der Liste:&lt;br /&gt;
&lt;br /&gt;
   /home/pacs/xyz00/users/listen/mailman/mail/mailman [Aktion] [Listenname]&lt;br /&gt;
&lt;br /&gt;
So wird das definiert für alle Aktionen für die Liste &#039;&#039;&#039;mailman&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4822</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4822"/>
		<updated>2019-03-06T12:51:22Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit ssh an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Die neue Mailman-Installation konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
=== Konfigurationsdatei mm_cfg.py editieren ===&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für lists.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;listen.example.de&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
      add_virtualhost(zweite.listendomain.de, zweite.listendomain.de)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-o.-g.-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.&lt;br /&gt;
&lt;br /&gt;
=== CGI-Programme in die Domain kopieren ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
&lt;br /&gt;
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/&lt;br /&gt;
&lt;br /&gt;
 Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: &lt;br /&gt;
&lt;br /&gt;
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt: &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/cgi-ssl&lt;br /&gt;
 ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Mailman-Icons in die Domains kopieren ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/listen.example.de/htdocs-ssl&lt;br /&gt;
 ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/&lt;br /&gt;
&lt;br /&gt;
=== Die Datei .htaccess bearbeiten ===&lt;br /&gt;
&lt;br /&gt;
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de  erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
Beachte dabei die zweite Zeile: Anfragen für Icons sollen &#039;&#039;nicht&#039;&#039; umgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Hauptpasswort setzen ===&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;site password&amp;quot; ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das &amp;quot;site password&amp;quot; einrichten mit dem Befehl: &lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:&lt;br /&gt;
&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
(Queuebearbeitung alle Minute, löschen der Verarbeitungslogs in der 47ten Minute jeder Std.)&lt;br /&gt;
&lt;br /&gt;
Dies übernimmt die Funktion des qrunner-Dämons, der bei Mailman normalerweise laufen würde.&lt;br /&gt;
Das Logfile wird gelöscht, da es sonst sehr schnell sehr groß wird.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die Cronjobs aus ~/mailman/cron/crontab.in eingefügt werden. &lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
=== Als erste Liste die &amp;quot;mailman&amp;quot; &amp;quot;site list&amp;quot; einrichten ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Neue Liste anlegen:&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
Nur für die &amp;quot;mailman site list&amp;quot;: Konfigurationsvorgaben laden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
(Diese Konfigurationsdatei nicht auf eigene Listen anwenden.)&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten === &lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin (virtusertable) und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]]: [https://doc.hostsharing.net/users/administration/hsadmin/index.html]&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser xyz00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users xyz00-listen werden anschließend entsprechende .forward-Dateien angelegt. Die Dateinamen und Inhalte dieser Dateien definieren den Aufruf von Mailman und die Aktion, die das Programm ausführen soll. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman&#039;&#039;&#039; verwendet, wenn die Adresse mailman@lists.example.com eine Mail erhält. In der .forward-Datei steht nun der Aufruf mit dem Programm, an das die Mail übergeben wird, die gewünschte Aktion und der Namen der Liste:&lt;br /&gt;
&lt;br /&gt;
   /home/pacs/xyz00/users/listen/mailman/mail/mailman [Aktion] [Listenname]&lt;br /&gt;
&lt;br /&gt;
So wird das definiert für alle Aktionen für die Liste &#039;&#039;&#039;mailman&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4821</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4821"/>
		<updated>2019-03-06T12:24:23Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailman installieren == &lt;br /&gt;
&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin (beipsielsweise &amp;quot;xyz00&amp;quot;) oder von einem Paketuser (bspw. &amp;quot;xyz00-listen&amp;quot;) installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.&amp;lt;!-- Aktualisieren? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einen User und eine Domain anlegen ===&lt;br /&gt;
&lt;br /&gt;
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit &amp;quot;Domain-User&amp;quot; xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.&lt;br /&gt;
&lt;br /&gt;
Mit ssh an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:&lt;br /&gt;
&lt;br /&gt;
 ~$ echo &amp;quot;&amp;quot; &amp;gt; ~/doms/lists.example.de/htdocs-ssl/.htaccess&lt;br /&gt;
&lt;br /&gt;
Die Default-Subdomains www.* löschen:&lt;br /&gt;
&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs/www/&lt;br /&gt;
   ~$ rm -r doms/listen.example.de/subs-ssl/www/&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...&lt;br /&gt;
&lt;br /&gt;
 ~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
... und entpacken:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.29.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als &amp;quot;prefix&amp;quot; angegeben.)&lt;br /&gt;
&lt;br /&gt;
=== var-Verzeichnis für Log-Dateien anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser (xyz00-listen):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin (xyz00):&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Mailman konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
In das Source-Verzeichnis wechseln:&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.29&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
(Die Rückwärtsschrägstriche &amp;quot;\&amp;quot; am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)&lt;br /&gt;
&lt;br /&gt;
=== Mailman kompilieren ===&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ make&lt;br /&gt;
 ~/mailman-2.1.29$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.29$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== mm_cfg.py ===&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei editieren:&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für lists.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py seht ihr, was man in mm_cfg.py alles einstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== CGIs in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser: Die CGIs müssen in das jeweilige Domain-Verzeichnis, auf denen das Mailman Webfrontend laufen soll, kopiert werden. Ein Verlinken ist nicht möglich. Zusätzlich muss das sticky-Flag entfernt werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/lists.example.com/cgi/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/lists.example.com/cgi/mailman/&lt;br /&gt;
 ~$ chmod g-s ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: CGIs in alle Domain-Verzeichnisse linken, auf denen das Mailman Webfrontend laufen soll. &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/cgi&lt;br /&gt;
 ~/doms/lists.example.com/cgi$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Icons in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/htdocs&lt;br /&gt;
 ~/doms/lists.example.com/htdocs$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder kopieren&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs/&lt;br /&gt;
&lt;br /&gt;
=== .htaccess ===&lt;br /&gt;
&lt;br /&gt;
Bei einer extra Mailman Domain dafür sorgen, dass Mailman auch unter lists.example.com statt unter lists.example.com/cgi-bin/mailman erreichbar ist.&lt;br /&gt;
In ~/doms/lists.example.com/htdocs/.htaccess folgendes eintragen (bitte RewriteCond für Icons beachten; ohne wird der Pfad für diese auch gemappt, was nicht korrekt ist):&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf der www Domain läuft und unter www.example.com/mailman statt www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(Die DEFAULT_URL_PATTERN Zeile in der mm_cfg.py kann für diesen Fall einfach auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Passwort setzen ===&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] wird z.B. eingetragen:&lt;br /&gt;
&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
(Queuebearbeitung alle Minute, löschen der Verarbeitungslogs in der 47ten Minute jeder Std.)&lt;br /&gt;
&lt;br /&gt;
Dies übernimmt die Funktion des qrunner-Dämons, der bei Mailman normalerweise laufen würde.&lt;br /&gt;
Das Logfile wird gelöscht, da es sonst sehr schnell sehr groß wird.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die Cronjobs aus ~/mailman/cron/crontab.in eingefügt werden. &lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
=== Als erste Liste die &amp;quot;mailman&amp;quot; &amp;quot;site list&amp;quot; einrichten ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Neue Liste anlegen:&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
Nur für die &amp;quot;mailman site list&amp;quot;: Konfigurationsvorgaben laden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
(Diese Konfigurationsdatei nicht auf eigene Listen anwenden.)&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten === &lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin (virtusertable) und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]]: [https://doc.hostsharing.net/users/administration/hsadmin/index.html]&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser xyz00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users xyz00-listen werden anschließend entsprechende .forward-Dateien angelegt. Die Dateinamen und Inhalte dieser Dateien definieren den Aufruf von Mailman und die Aktion, die das Programm ausführen soll. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman&#039;&#039;&#039; verwendet, wenn die Adresse mailman@lists.example.com eine Mail erhält. In der .forward-Datei steht nun der Aufruf mit dem Programm, an das die Mail übergeben wird, die gewünschte Aktion und der Namen der Liste:&lt;br /&gt;
&lt;br /&gt;
   /home/pacs/xyz00/users/listen/mailman/mail/mailman [Aktion] [Listenname]&lt;br /&gt;
&lt;br /&gt;
So wird das definiert für alle Aktionen für die Liste &#039;&#039;&#039;mailman&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4818</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4818"/>
		<updated>2019-03-04T17:48:32Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Sourcen besorgen und entpacken */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation == &lt;br /&gt;
&lt;br /&gt;
Installationsanleitung von Mailman&amp;lt;br&amp;gt;&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.12 in eigenem Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin oder vom Paketuser installiert werden. Wenn er vom Paketadmin installiert wird, haben jedoch ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Zur Separation von Paketadminrechten und anderen Paketusern ist es vorzuziehen Mailman in einem Paketuser  Account zu installieren. (Bspw. xyz00-listen) Und diesem separaten User ggf mehrere lists.*.* Subdomains aufzuschalten.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung werden (wie immer bei .forward) die Rechte des Zielusers angenommen. (So läuft das auch bei procmail.)&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass bisher so nicht die Paketdomain mit dem SSL Zertifikat von Hostsharing genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden und auf der Shell entpacken mit diesem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.12.tgz&lt;br /&gt;
&lt;br /&gt;
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.12/. Darin liegt die nunmehr entpackte &#039;&#039;Quellcode&#039;&#039; der Mailman-Software. Nach dem Kompilieren (folgt unten) wird es &#039;&#039;zusätzlich&#039;&#039; das Verzeichnis mailman/ geben: darin liegt dann die fertig kompilierte, gebrauchsfähige Mailman-Software.&lt;br /&gt;
&lt;br /&gt;
=== Log-Verzeichnis anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Braucht einige Optionen, die anzupassen sind.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.12&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
(die \ bedeuten, dass alles in eine Zeile gehört, bzw. die Returns nicht interpretiert werden sollen.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anschließend:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.12$ make&lt;br /&gt;
 ~/mailman-2.1.12$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte prüfen (und ggf. korrigieren) lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.12$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== mm_cfg.py ===&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei editieren:&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für lists.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py seht ihr, was man in mm_cfg.py alles einstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== CGIs in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser: Die CGIs müssen in das jeweilige Domain-Verzeichnis, auf denen das Mailman Webfrontend laufen soll, kopiert werden. Ein Verlinken ist nicht möglich. Zusätzlich muss das sticky-Flag entfernt werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/lists.example.com/cgi/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/lists.example.com/cgi/mailman/&lt;br /&gt;
 ~$ chmod g-s ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: CGIs in alle Domain-Verzeichnisse linken, auf denen das Mailman Webfrontend laufen soll. &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/cgi&lt;br /&gt;
 ~/doms/lists.example.com/cgi$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Icons in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/htdocs&lt;br /&gt;
 ~/doms/lists.example.com/htdocs$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder kopieren&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs/&lt;br /&gt;
&lt;br /&gt;
=== .htaccess ===&lt;br /&gt;
&lt;br /&gt;
Bei einer extra Mailman Domain dafür sorgen, dass Mailman auch unter lists.example.com statt unter lists.example.com/cgi-bin/mailman erreichbar ist.&lt;br /&gt;
In ~/doms/lists.example.com/htdocs/.htaccess folgendes eintragen (bitte RewriteCond für Icons beachten; ohne wird der Pfad für diese auch gemappt, was nicht korrekt ist):&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf der www Domain läuft und unter www.example.com/mailman statt www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(Die DEFAULT_URL_PATTERN Zeile in der mm_cfg.py kann für diesen Fall einfach auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Passwort setzen ===&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] wird z.B. eingetragen:&lt;br /&gt;
&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
(Queuebearbeitung alle Minute, löschen der Verarbeitungslogs in der 47ten Minute jeder Std.)&lt;br /&gt;
&lt;br /&gt;
Dies übernimmt die Funktion des qrunner-Dämons, der bei Mailman normalerweise laufen würde.&lt;br /&gt;
Das Logfile wird gelöscht, da es sonst sehr schnell sehr groß wird.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die Cronjobs aus ~/mailman/cron/crontab.in eingefügt werden. &lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
=== Als erste Liste die &amp;quot;mailman&amp;quot; &amp;quot;site list&amp;quot; einrichten ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Neue Liste anlegen:&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
Nur für die &amp;quot;mailman site list&amp;quot;: Konfigurationsvorgaben laden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
(Diese Konfigurationsdatei nicht auf eigene Listen anwenden.)&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten === &lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin (virtusertable) und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]]: [https://doc.hostsharing.net/users/administration/hsadmin/index.html]&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser xyz00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users xyz00-listen werden anschließend entsprechende .forward-Dateien angelegt. Die Dateinamen und Inhalte dieser Dateien definieren den Aufruf von Mailman und die Aktion, die das Programm ausführen soll. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman&#039;&#039;&#039; verwendet, wenn die Adresse mailman@lists.example.com eine Mail erhält. In der .forward-Datei steht nun der Aufruf mit dem Programm, an das die Mail übergeben wird, die gewünschte Aktion und der Namen der Liste:&lt;br /&gt;
&lt;br /&gt;
   /home/pacs/xyz00/users/listen/mailman/mail/mailman [Aktion] [Listenname]&lt;br /&gt;
&lt;br /&gt;
So wird das definiert für alle Aktionen für die Liste &#039;&#039;&#039;mailman&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4817</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4817"/>
		<updated>2019-03-04T14:02:10Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Doch nicht&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation == &lt;br /&gt;
&lt;br /&gt;
Installationsanleitung von Mailman&amp;lt;br&amp;gt;&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.12 in eigenem Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin oder vom Paketuser installiert werden. Wenn er vom Paketadmin installiert wird, haben jedoch ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Zur Separation von Paketadminrechten und anderen Paketusern ist es vorzuziehen Mailman in einem Paketuser  Account zu installieren. (Bspw. xyz00-listen) Und diesem separaten User ggf mehrere lists.*.* Subdomains aufzuschalten.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung werden (wie immer bei .forward) die Rechte des Zielusers angenommen. (So läuft das auch bei procmail.)&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass bisher so nicht die Paketdomain mit dem SSL Zertifikat von Hostsharing genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden und auf der Shell entpacken mit diesem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.12.tgz&lt;br /&gt;
&lt;br /&gt;
=== Log-Verzeichnis anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Braucht einige Optionen, die anzupassen sind.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.12&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
(die \ bedeuten, dass alles in eine Zeile gehört, bzw. die Returns nicht interpretiert werden sollen.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anschließend:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.12$ make&lt;br /&gt;
 ~/mailman-2.1.12$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte prüfen (und ggf. korrigieren) lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.12$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== mm_cfg.py ===&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei editieren:&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für lists.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py seht ihr, was man in mm_cfg.py alles einstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== CGIs in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser: Die CGIs müssen in das jeweilige Domain-Verzeichnis, auf denen das Mailman Webfrontend laufen soll, kopiert werden. Ein Verlinken ist nicht möglich. Zusätzlich muss das sticky-Flag entfernt werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/lists.example.com/cgi/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/lists.example.com/cgi/mailman/&lt;br /&gt;
 ~$ chmod g-s ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: CGIs in alle Domain-Verzeichnisse linken, auf denen das Mailman Webfrontend laufen soll. &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/cgi&lt;br /&gt;
 ~/doms/lists.example.com/cgi$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Icons in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/htdocs&lt;br /&gt;
 ~/doms/lists.example.com/htdocs$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder kopieren&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs/&lt;br /&gt;
&lt;br /&gt;
=== .htaccess ===&lt;br /&gt;
&lt;br /&gt;
Bei einer extra Mailman Domain dafür sorgen, dass Mailman auch unter lists.example.com statt unter lists.example.com/cgi-bin/mailman erreichbar ist.&lt;br /&gt;
In ~/doms/lists.example.com/htdocs/.htaccess folgendes eintragen (bitte RewriteCond für Icons beachten; ohne wird der Pfad für diese auch gemappt, was nicht korrekt ist):&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf der www Domain läuft und unter www.example.com/mailman statt www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(Die DEFAULT_URL_PATTERN Zeile in der mm_cfg.py kann für diesen Fall einfach auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Passwort setzen ===&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] wird z.B. eingetragen:&lt;br /&gt;
&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
(Queuebearbeitung alle Minute, löschen der Verarbeitungslogs in der 47ten Minute jeder Std.)&lt;br /&gt;
&lt;br /&gt;
Dies übernimmt die Funktion des qrunner-Dämons, der bei Mailman normalerweise laufen würde.&lt;br /&gt;
Das Logfile wird gelöscht, da es sonst sehr schnell sehr groß wird.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die Cronjobs aus ~/mailman/cron/crontab.in eingefügt werden. &lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
=== Als erste Liste die &amp;quot;mailman&amp;quot; &amp;quot;site list&amp;quot; einrichten ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Neue Liste anlegen:&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
Nur für die &amp;quot;mailman site list&amp;quot;: Konfigurationsvorgaben laden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
(Diese Konfigurationsdatei nicht auf eigene Listen anwenden.)&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten === &lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin (virtusertable) und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]]: [https://doc.hostsharing.net/users/administration/hsadmin/index.html]&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser xyz00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users xyz00-listen werden anschließend entsprechende .forward-Dateien angelegt. Die Dateinamen und Inhalte dieser Dateien definieren den Aufruf von Mailman und die Aktion, die das Programm ausführen soll. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman&#039;&#039;&#039; verwendet, wenn die Adresse mailman@lists.example.com eine Mail erhält. In der .forward-Datei steht nun der Aufruf mit dem Programm, an das die Mail übergeben wird, die gewünschte Aktion und der Namen der Liste:&lt;br /&gt;
&lt;br /&gt;
   /home/pacs/xyz00/users/listen/mailman/mail/mailman [Aktion] [Listenname]&lt;br /&gt;
&lt;br /&gt;
So wird das definiert für alle Aktionen für die Liste &#039;&#039;&#039;mailman&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4816</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=4816"/>
		<updated>2019-03-04T13:57:45Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Symlink &amp;quot;mailman&amp;quot; erstellen!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation == &lt;br /&gt;
&lt;br /&gt;
Installationsanleitung von Mailman&amp;lt;br&amp;gt;&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.12 in eigenem Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin oder vom Paketuser installiert werden. Wenn er vom Paketadmin installiert wird, haben jedoch ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Zur Separation von Paketadminrechten und anderen Paketusern ist es vorzuziehen Mailman in einem Paketuser  Account zu installieren. (Bspw. xyz00-listen) Und diesem separaten User ggf mehrere lists.*.* Subdomains aufzuschalten.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung werden (wie immer bei .forward) die Rechte des Zielusers angenommen. (So läuft das auch bei procmail.)&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass bisher so nicht die Paketdomain mit dem SSL Zertifikat von Hostsharing genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden und auf der Shell entpacken mit diesem Befehl:&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.12.tgz&lt;br /&gt;
&lt;br /&gt;
Einen symbolischen Link auf das resultierende Software-Verzeichnis erstellen:&lt;br /&gt;
&lt;br /&gt;
 ~$ ln -s mailman-2.1.12 mailman&lt;br /&gt;
&lt;br /&gt;
=== Log-Verzeichnis anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ cd &amp;amp;&amp;amp; mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Braucht einige Optionen, die anzupassen sind.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.12&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \&lt;br /&gt;
              --with-username=xyz00-listen \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=xyz00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/xyz00/mailman \&lt;br /&gt;
              --with-username=xyz00 \&lt;br /&gt;
              --with-groupname=xyz00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/xyz00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=xyz00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
(die \ bedeuten, dass alles in eine Zeile gehört, bzw. die Returns nicht interpretiert werden sollen.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anschließend:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.12$ make&lt;br /&gt;
 ~/mailman-2.1.12$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte prüfen (und ggf. korrigieren) lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.12$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== mm_cfg.py ===&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei editieren:&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für lists.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
  &lt;br /&gt;
      # Es wird der HS Mailversand für Bulkmail verwendet:&lt;br /&gt;
      SMTPHOST = &#039;localhost&#039;&lt;br /&gt;
      SMTPPORT = 4587 &lt;br /&gt;
      SMTP_AUTH = True&lt;br /&gt;
      SMTP_USER = &#039;xyz00-listen&#039;&lt;br /&gt;
      SMTP_PASSWD = &#039;das-passwort-des-users&#039;&lt;br /&gt;
      SMTP_USE_TLS = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py seht ihr, was man in mm_cfg.py alles einstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== CGIs in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser: Die CGIs müssen in das jeweilige Domain-Verzeichnis, auf denen das Mailman Webfrontend laufen soll, kopiert werden. Ein Verlinken ist nicht möglich. Zusätzlich muss das sticky-Flag entfernt werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/lists.example.com/cgi/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/lists.example.com/cgi/mailman/&lt;br /&gt;
 ~$ chmod g-s ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: CGIs in alle Domain-Verzeichnisse linken, auf denen das Mailman Webfrontend laufen soll. &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/cgi&lt;br /&gt;
 ~/doms/lists.example.com/cgi$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Icons in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/htdocs&lt;br /&gt;
 ~/doms/lists.example.com/htdocs$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder kopieren&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs/&lt;br /&gt;
&lt;br /&gt;
=== .htaccess ===&lt;br /&gt;
&lt;br /&gt;
Bei einer extra Mailman Domain dafür sorgen, dass Mailman auch unter lists.example.com statt unter lists.example.com/cgi-bin/mailman erreichbar ist.&lt;br /&gt;
In ~/doms/lists.example.com/htdocs/.htaccess folgendes eintragen (bitte RewriteCond für Icons beachten; ohne wird der Pfad für diese auch gemappt, was nicht korrekt ist):&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf der www Domain läuft und unter www.example.com/mailman statt www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(Die DEFAULT_URL_PATTERN Zeile in der mm_cfg.py kann für diesen Fall einfach auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Passwort setzen ===&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] wird z.B. eingetragen:&lt;br /&gt;
&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
(Queuebearbeitung alle Minute, löschen der Verarbeitungslogs in der 47ten Minute jeder Std.)&lt;br /&gt;
&lt;br /&gt;
Dies übernimmt die Funktion des qrunner-Dämons, der bei Mailman normalerweise laufen würde.&lt;br /&gt;
Das Logfile wird gelöscht, da es sonst sehr schnell sehr groß wird.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die Cronjobs aus ~/mailman/cron/crontab.in eingefügt werden. &lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
=== Als erste Liste die &amp;quot;mailman&amp;quot; &amp;quot;site list&amp;quot; einrichten ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Neue Liste anlegen:&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
Nur für die &amp;quot;mailman site list&amp;quot;: Konfigurationsvorgaben laden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
(Diese Konfigurationsdatei nicht auf eigene Listen anwenden.)&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten === &lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin (virtusertable) und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]]: [https://doc.hostsharing.net/users/administration/hsadmin/index.html]&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser xyz00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman&#039;,target:&#039;xyz00-listen+mailman&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-admin&#039;,target:&#039;xyz00-listen+mailman-admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-bounces&#039;,target:&#039;xyz00-listen+mailman-bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-confirm&#039;,target:&#039;xyz00-listen+mailman-confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-join&#039;,target:&#039;xyz00-listen+mailman-join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-leave&#039;,target:&#039;xyz00-listen+mailman-leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-owner&#039;,target:&#039;xyz00-listen+mailman-owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-request&#039;,target:&#039;xyz00-listen+mailman-request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-subscribe&#039;,target:&#039;xyz00-listen+mailman-subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;mailman-unsubscribe&#039;,target:&#039;xyz00-listen+mailman-unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users xyz00-listen werden anschließend entsprechende .forward-Dateien angelegt. Die Dateinamen und Inhalte dieser Dateien definieren den Aufruf von Mailman und die Aktion, die das Programm ausführen soll. Zum Beispiel wird die .forward-Datei &#039;&#039;&#039;.forward+mailman&#039;&#039;&#039; verwendet, wenn die Adresse mailman@lists.example.com eine Mail erhält. In der .forward-Datei steht nun der Aufruf mit dem Programm, an das die Mail übergeben wird, die gewünschte Aktion und der Namen der Liste:&lt;br /&gt;
&lt;br /&gt;
   /home/pacs/xyz00/users/listen/mailman/mail/mailman [Aktion] [Listenname]&lt;br /&gt;
&lt;br /&gt;
So wird das definiert für alle Aktionen für die Liste &#039;&#039;&#039;mailman&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@xyz00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selbst abonnieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html&amp;lt;br&amp;gt;&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Diskussion:Mailman_Installieren&amp;diff=4318</id>
		<title>Diskussion:Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Diskussion:Mailman_Installieren&amp;diff=4318"/>
		<updated>2017-03-15T14:56:21Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Don&amp;#039;t try this at home! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sehr schön; sauberer gegliedert als die Vorversion. &lt;br /&gt;
&lt;br /&gt;
Ein paar Vorschläge dennoch:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Mailman kann als Paketadmin oder Paketuser installiert werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paket-Admin&amp;quot;, &amp;quot;Paketadmin&amp;quot;: Ich wäre dafür, wir würden überall im Wiki die Schreibweise &amp;quot;Paket-Admin&amp;quot; verwenden. Einfach als konservativer Umgang mit Wortschöpfungen. Andere Meinungen?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paketuser&amp;quot; ist auf der Seite [[User-Arten]] nicht definiert. Sollte es hier wohl &amp;quot;Domain-Admin&amp;quot; heißen?&lt;br /&gt;
&lt;br /&gt;
* Syntax: Strenggenommen kann Mailman nur als Softwareprogramm installiert werden, nicht als Paket-Admin oder als Domain-Admin. Alternativer Satzbau: &amp;quot;Mailman kann vom Paket-Admin oder von einem Domain-Admin installiert werden.&amp;quot; Oder: &amp;quot;Mailman kann man als Paket-Admin oder als Domain-Admin installiert werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur ==&lt;br /&gt;
&lt;br /&gt;
Als Verzeichnisname fuer die Mailman Installation wird in der Anleitung teilweise &amp;quot;mailman&amp;quot; und teilweise &amp;quot;mailman-2.1.12&amp;quot; verwendet. Ist das beabsichtigt? Bin mir nicht sicher, aber ich vermute, dass es einheitlich &amp;quot;mailman-2.1.12&amp;quot; heissen sollte. Z.B.&lt;br /&gt;
&lt;br /&gt;
      ~$ mkdir -p mailman-2.1.12/var&lt;br /&gt;
      ~$ chmod 02775 mailman-2.1.12/var&lt;br /&gt;
&lt;br /&gt;
statt:&lt;br /&gt;
      ~$ mkdir -p mailman/var&lt;br /&gt;
      ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
oder:&lt;br /&gt;
&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/XYZ00/mailman-2.1.12 \&lt;br /&gt;
        --with-username=XYZ00 \&lt;br /&gt;
        --with-groupname=XYZ00 \&lt;br /&gt;
        --with-var-prefix=/home/pacs/XYZ00/var/mailman-2.1.12 \&lt;br /&gt;
        --with-cgi-gid=XYZ00 \&lt;br /&gt;
        --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
satt:&lt;br /&gt;
&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/XYZ00/mailman \&lt;br /&gt;
        --with-username=XYZ00 \&lt;br /&gt;
        --with-groupname=XYZ00 \&lt;br /&gt;
        --with-var-prefix=/home/pacs/XYZ00/var/mailman \&lt;br /&gt;
        --with-cgi-gid=XYZ00 \&lt;br /&gt;
        --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
: Nein, das ist Absicht. Unter &amp;quot;mailman-2.1.12&amp;quot; liegen die entpackten Sourcen, wohingegen nach &amp;quot;mailman&amp;quot; installiert wird. --[[Benutzer:Daz00-daniel|Daz00-daniel]] 13:33, 6. Okt. 2009 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t try this at home! ==&lt;br /&gt;
&lt;br /&gt;
Also bitte nicht mehr Mailman als Paketadmin installieren und nicht mehr mittels Aliases die Mails auf Mailman pipen.&lt;br /&gt;
&lt;br /&gt;
Und nicht mehr die E-Mail-Adressen und Aliases auf diese Art einrichten:&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman post listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_admin&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman admin listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_bounce&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman bounce listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_confirm&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman confirm listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_join&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman join listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_leave&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman leave listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_owner&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman owner listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_request&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman request listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_subscribe&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman subscribe listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_unsubscribe&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman unsubscribe listname-bindestriche-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay&#039;,target:&#039;xyz00-listname_ohne_bindestriche&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-admin&#039;,target:&#039;xyz00-listname_ohne_bindestriche_admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-bounces&#039;,target:&#039;xyz00-listname_ohne_bindestriche_bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-confirm&#039;,target:&#039;xyz00-listname_ohne_bindestriche_confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-join&#039;,target:&#039;xyz00-listname_ohne_bindestriche_join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-leave&#039;,target:&#039;xyz00-listname_ohne_bindestriche_leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-owner&#039;,target:&#039;xyz00-listname_ohne_bindestriche_owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-request&#039;,target:&#039;xyz00-listname_ohne_bindestriche_request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-subscribe&#039;,target:&#039;xyz00-listname_ohne_bindestriche_subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestriche-okay-unsubscribe&#039;,target:&#039;xyz00-listname_ohne_bindestriche_unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Und dabei nicht die doppelten Anführungszeichen bei dem Alias-Ziel beachten.&lt;br /&gt;
&lt;br /&gt;
Okay? Okay! [[Benutzer:Apc00|Tony Crawford (apc00)]] ([[Benutzer Diskussion:Apc00|Diskussion]]) 15:52, 15. Mär. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Diskussion:Mailman_Installieren&amp;diff=4317</id>
		<title>Diskussion:Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Diskussion:Mailman_Installieren&amp;diff=4317"/>
		<updated>2017-03-15T14:52:43Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Neuer Abschnitt /* Don&amp;#039;t try this at home! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sehr schön; sauberer gegliedert als die Vorversion. &lt;br /&gt;
&lt;br /&gt;
Ein paar Vorschläge dennoch:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Mailman kann als Paketadmin oder Paketuser installiert werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paket-Admin&amp;quot;, &amp;quot;Paketadmin&amp;quot;: Ich wäre dafür, wir würden überall im Wiki die Schreibweise &amp;quot;Paket-Admin&amp;quot; verwenden. Einfach als konservativer Umgang mit Wortschöpfungen. Andere Meinungen?&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Paketuser&amp;quot; ist auf der Seite [[User-Arten]] nicht definiert. Sollte es hier wohl &amp;quot;Domain-Admin&amp;quot; heißen?&lt;br /&gt;
&lt;br /&gt;
* Syntax: Strenggenommen kann Mailman nur als Softwareprogramm installiert werden, nicht als Paket-Admin oder als Domain-Admin. Alternativer Satzbau: &amp;quot;Mailman kann vom Paket-Admin oder von einem Domain-Admin installiert werden.&amp;quot; Oder: &amp;quot;Mailman kann man als Paket-Admin oder als Domain-Admin installiert werden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur ==&lt;br /&gt;
&lt;br /&gt;
Als Verzeichnisname fuer die Mailman Installation wird in der Anleitung teilweise &amp;quot;mailman&amp;quot; und teilweise &amp;quot;mailman-2.1.12&amp;quot; verwendet. Ist das beabsichtigt? Bin mir nicht sicher, aber ich vermute, dass es einheitlich &amp;quot;mailman-2.1.12&amp;quot; heissen sollte. Z.B.&lt;br /&gt;
&lt;br /&gt;
      ~$ mkdir -p mailman-2.1.12/var&lt;br /&gt;
      ~$ chmod 02775 mailman-2.1.12/var&lt;br /&gt;
&lt;br /&gt;
statt:&lt;br /&gt;
      ~$ mkdir -p mailman/var&lt;br /&gt;
      ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
oder:&lt;br /&gt;
&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/XYZ00/mailman-2.1.12 \&lt;br /&gt;
        --with-username=XYZ00 \&lt;br /&gt;
        --with-groupname=XYZ00 \&lt;br /&gt;
        --with-var-prefix=/home/pacs/XYZ00/var/mailman-2.1.12 \&lt;br /&gt;
        --with-cgi-gid=XYZ00 \&lt;br /&gt;
        --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
satt:&lt;br /&gt;
&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/XYZ00/mailman \&lt;br /&gt;
        --with-username=XYZ00 \&lt;br /&gt;
        --with-groupname=XYZ00 \&lt;br /&gt;
        --with-var-prefix=/home/pacs/XYZ00/var/mailman \&lt;br /&gt;
        --with-cgi-gid=XYZ00 \&lt;br /&gt;
        --with-mail-gid=nogroup&lt;br /&gt;
&lt;br /&gt;
: Nein, das ist Absicht. Unter &amp;quot;mailman-2.1.12&amp;quot; liegen die entpackten Sourcen, wohingegen nach &amp;quot;mailman&amp;quot; installiert wird. --[[Benutzer:Daz00-daniel|Daz00-daniel]] 13:33, 6. Okt. 2009 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t try this at home! ==&lt;br /&gt;
&lt;br /&gt;
Also bitte nicht mehr Mailman als Paketadmin installieren und nicht mehr mittels Aliases die Mails auf Mailman pipen.&lt;br /&gt;
&lt;br /&gt;
Und nicht mehr die E-Mail-Adressen und Aliases auf diese Art einrichten:&lt;br /&gt;
&lt;br /&gt;
   hsscript -u xyz00 -i&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman post listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_admin&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman admin listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_bounce&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman bounce listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_confirm&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman confirm listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_join&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman join listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_leave&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman leave listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_owner&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman owner listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_request&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman request listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_subscribe&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman subscribe listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailalias.add ({set:{name:&#039;xyz00-listname_ohne_bindestriche_unsubscribe&#039;,target:&#039;&amp;quot;|/home/pacs/xyz00/mailman/mail/mailman unsubscribe listname-bindestrich-okay&amp;quot;&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay&#039;,target:&#039;xyz00-listname_ohne_bindestriche&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-admin&#039;,target:&#039;xyz00-listname_ohne_bindestriche_admin&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-bounces&#039;,target:&#039;xyz00-listname_ohne_bindestriche_bounces&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-confirm&#039;,target:&#039;xyz00-listname_ohne_bindestriche_confirm&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-join&#039;,target:&#039;xyz00-listname_ohne_bindestriche_join&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-leave&#039;,target:&#039;xyz00-listname_ohne_bindestriche_leave&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-owner&#039;,target:&#039;xyz00-listname_ohne_bindestriche_owner&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-request&#039;,target:&#039;xyz00-listname_ohne_bindestriche_request&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-subscribe&#039;,target:&#039;xyz00-listname_ohne_bindestriche_subscribe&#039;}})&lt;br /&gt;
   emailaddress.add ({set:{domain:&#039;lists.example.com&#039;,localpart:&#039;listname-bindestrich-okay-unsubscribe&#039;,target:&#039;xyz00-listname_ohne_bindestriche_unsubscribe&#039;}})&lt;br /&gt;
&lt;br /&gt;
Okay? Okay! [[Benutzer:Apc00|Tony Crawford (apc00)]] ([[Benutzer Diskussion:Apc00|Diskussion]]) 15:52, 15. Mär. 2017 (CET)&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Nameserver&amp;diff=3909</id>
		<title>Nameserver</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Nameserver&amp;diff=3909"/>
		<updated>2014-06-09T12:23:42Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Verweis siehe auch -&amp;gt; zonenedateien hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für Domains, die bei Hostsharing registriert sind, gibt es drei redundante Nameserver, die auf Anfrage die Zuordnung Domainname (z.B. www.example.com) -&amp;gt; IP-Adresse (z.B. 1.2.3.4) vornehmen. Diese Nameserver stehen aus Gründen der Zuverlässigkeit und Ausfallsicherheit in drei verschiedenen autonomen Systemen (AS siehe http://de.wikipedia.org/wiki/Autonomes_System) an verschiedenen Standorten. Die Namen dieser Nameserver lauten:&lt;br /&gt;
&lt;br /&gt;
* dns1.hostsharing.net&lt;br /&gt;
* dns2.hostsharing.net&lt;br /&gt;
* dns3.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Jede Nutzung eines Dienstes (z.B. Email, WWW, FTP, SSH und viele andere) im Internet, die über den Domainnamen des zugehörigen Rechners erfolgt, benötigt einen Nameserver, der die Frage nach der IP-Adresse des Rechners beantwortet.&lt;br /&gt;
&lt;br /&gt;
Ohne Nameserver kann der Dienst natürlich auch erreicht werden, und zwar direkt über seine IP-Adresse. Aber nur die Existenz des Nameservers erlaubt es, den Dienst über seinen Domainnamen aufzurufen.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[Verwalten der Zonendaten]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Zonefile]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3600</id>
		<title>DAViCal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3600"/>
		<updated>2013-06-19T16:10:47Z</updated>

		<summary type="html">&lt;p&gt;Apc00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen Client-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry, iCal, oder iPhone.&lt;br /&gt;
&lt;br /&gt;
Das CalDAV-Protokoll bietet viele Funktionen, die noch nicht von allen Clients unterstützt werden, darunter Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc.&lt;br /&gt;
&lt;br /&gt;
DAViCal ist in PHP geschrieben, lizensiert unter GPL.&lt;br /&gt;
&lt;br /&gt;
DAViCal erlaubt auch über das WebDAV-Protokoll Kalender zu lesen, aber nicht zu modifizieren.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
DAViCal erfordert folgende technische Ressourcen:&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Webserver mit PHP5&lt;br /&gt;
* Perl für den Installationsvorgang&lt;br /&gt;
* Ein Dateisystem mit erweiterten Attributen.&lt;br /&gt;
&lt;br /&gt;
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared-Hosting-Umgebung bei Hostsharing installiert und betreibt.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür [[Domainverwaltung#Lokale_Subdomains_durch_Aufschalten.3B_Delegieren|aufgeschalteten Subdomain]] über SSL betrieben wird. Für andere Konfigurationen, wie z.B. die Installation von DAViCal in einer als Unterverzeichnis von &amp;lt;tt&amp;gt;~/doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; erstellten Subdomain, muß dieses Verfahren leicht angepaßt werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von anderen Domaininhalten, PHP-Konfigurationen, oder sogar von anderen Domain-Administratoren, isoliert werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Subdomain aufschalten ===&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden folgende Domainkonfigurationsdaten als Beispiel verwendet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Subdomain || &amp;lt;tt&amp;gt;cal.example.org&amp;lt;/tt&amp;gt;  || Die Subdomain, unter der ein DAViCal-Server laufen soll&lt;br /&gt;
|-&lt;br /&gt;
| Domain-Admin || &amp;lt;tt&amp;gt;xyz00-hans&amp;lt;/tt&amp;gt; || Der User, dem die Subdomain delegiert wurde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quellen ===&lt;br /&gt;
&lt;br /&gt;
Neben dem Sourcecode vom eigentlichen DAViCal-Programm wird auch die PHP-Bibliothek [http://andrew.mcmillan.net.nz/projects/awl &#039;&#039;Andrew&#039;s Web Libraries&#039;&#039;] benötigt. Diese stammt vom gleichen Entwickler.&lt;br /&gt;
&lt;br /&gt;
Die jeweils neusten Versionen befinden sich unter:&lt;br /&gt;
* DAViCal: http://debian.mcmillan.net.nz/packages/davical/&lt;br /&gt;
* AWL: http://debian.mcmillan.net.nz/packages/awl/&lt;br /&gt;
&lt;br /&gt;
Hier jeweils die Source-Dateien (&amp;lt;tt&amp;gt;*.tar.gz&amp;lt;/tt&amp;gt;) benutzen.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd ~/doms/cal.example.org/var&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.53.tar.gz&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-1.1.1.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auspacken ====&lt;br /&gt;
&lt;br /&gt;
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen, die Dateierzeungsmaske temporär auf 022 setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 022&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann die heruntergeladenen Tarballs mit &amp;lt;tt&amp;gt;tar&amp;lt;/tt&amp;gt; auspacken:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ tar xfvz awl-0.46.tar.gz&lt;br /&gt;
$ tar xfvz davical-0.9.9.4.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann zwei symbolische Links mit den generischen Namen &amp;lt;tt&amp;gt;davical&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;awl&amp;lt;/tt&amp;gt; erzeugen, die auf die installierten Versionen zeigen (dies erleichtert einen späteren Versionswechsel):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ ln -s  awl-0.53  awl&lt;br /&gt;
$ ln -s  davical-1.1.1  davical&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und zum Schluß die ursprüngliche Dateierzeugungsmaske wiederherstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 077&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL vorbereiten ===&lt;br /&gt;
&lt;br /&gt;
DAViCal benötigt eine eigene PostgreSQL-Datenbank sowie 2 Datenbanknutzer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DAViCal enthält ein eigenes Installations-Skript, das die erforderlichen Datenbank, Datenbanknutzer, prozedurale Sprache, und Datenbanktabellen anlegt und initialisiert. Dies liegt unter &amp;lt;tt&amp;gt;davical/dba/create-database.sh&amp;lt;/tt&amp;gt;. Allerdings basiert das Skript auf der Annahme, daß man Superuser-Rechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist. In diesem Abschnitt wird deshalb beschrieben, wie man die entsprechenden Vorgänge in Hostsharing &amp;quot;von Hand&amp;quot; bewerkstelligt.&lt;br /&gt;
&lt;br /&gt;
==== Datenbank und Datenbanknutzer anlegen ====&lt;br /&gt;
&lt;br /&gt;
In dieser Anleitung werden folgende Namen für die Datenbank und deren Nutzer verwendet. Das Paket-Kürzel &amp;lt;tt&amp;gt;xyz00&amp;lt;/tt&amp;gt; ist natürlich durch das des betreffenden Pakets zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| DB-Admin || &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, dem die Datenbank gehört und der administrative Tätigkeiten durchführt.&lt;br /&gt;
|-&lt;br /&gt;
| DB-Nutzer || &amp;lt;tt&amp;gt;xyz00_davical_app&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzername, den DAViCal benutzt, um in der Datenbank zu lesen und zu schreiben.&lt;br /&gt;
|-&lt;br /&gt;
| Datenbank || &amp;lt;tt&amp;gt;xyz00_davical&amp;lt;/tt&amp;gt;  || Die PostgreSQL-Datenbank, die DAViCals Daten enthält.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Umgebungsvariablen und PostgreSQL-Paßwort ====&lt;br /&gt;
&lt;br /&gt;
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Siehe dazu die Anleitungen auf der Seite [[PostgreSQL]] und [[Datenbanken]]. Diese Schritte müssen ggf. vom Paket-Admin vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ su xyz00&lt;br /&gt;
$ hsadmin -c postgresqluser.add --set:name=xyz00_davical_dba --set:password=geheim&lt;br /&gt;
$ hsadmin -c postgresqluser.add --set:name=xyz00_davical_app --set:password=geheim&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Besitzer der DAViCal-Datenbank &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; angeben; als Zeichenkodierung ist das Default &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; richtig:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ hsadmin -c postgresqldb.add --set:name=xyz00_davical --set:owner=xyz00_davical_dba&lt;br /&gt;
$ exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sowohl für die weitere Installation als auch für den Betrieb des Servers ist es am einfachsten, die Passwörter in eine &amp;lt;tt&amp;gt;[http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html .pgpass]&amp;lt;/tt&amp;gt;-Datei zu schreiben: so müssen sie weder in den PHP-Dateien angegeben noch während der Installation manuell eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_dba:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_app:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ chmod 0600 ~/.pgpass&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur weiteren Bequemlichkeit Umgebungsvariablen setzen, so daß beim Aufruf von &amp;lt;tt&amp;gt;psql&amp;lt;/tt&amp;gt; über die Kommandozeile keine Datenbank- und Nutzernamen eingegeben werden müssen. Diese Angaben gehen mit Beenden der Shell-Sitzung verloren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ PGHOST=localhost &lt;br /&gt;
$ PGUSER=xyz00_davical_dba&lt;br /&gt;
$ PGDATABASE=xyz00_davical &lt;br /&gt;
$ export PGHOST PGUSER PGDATABASE &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PL/pgSQL installieren ====&lt;br /&gt;
&lt;br /&gt;
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese wird durch den folgenden Befehl angelegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;CREATE LANGUAGE plpgsql;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Datenbank-Tabellen anlegen und initialisieren ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Befehle zum Anlegen der Datenbanktabellen können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die Umgebungsvariablen &amp;lt;tt&amp;gt;PGHOST&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;PGUSER&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;PGDATABASE&amp;lt;/tt&amp;gt; gesetzt wurden und die &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt;-Datei geschrieben wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -f awl/dba/awl-tables.sql&lt;br /&gt;
$ psql -A -f awl/dba/schema-management.sql&lt;br /&gt;
$ psql -A -f davical/dba/davical.sql&lt;br /&gt;
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app&lt;br /&gt;
$ psql -A -f davical/dba/base-data.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den DAViCal-Admin muß noch ein Passwort gesetzt werden &amp;amp;ndash; &#039;&amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;&#039; vor dem Passwort ist hier wichtig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;UPDATE usr SET password = &#039;**geheim&#039; WHERE user_no = 1;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
DAViCal wird durch Angaben in der PHP-Datei &amp;lt;tt&amp;gt;davical/config/config.php&amp;lt;/tt&amp;gt; konfiguriert. Der folgende Befehl erzeugt eine Beispiel-Datei; weitere Beispiele befinden sich im Verzeichnis &amp;lt;tt&amp;gt;davical/config/&amp;lt;/tt&amp;gt;. Die Konfigurationsparameter sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat &amp;gt; davical/config/config.php&lt;br /&gt;
   $c-&amp;gt;pg_connect[] = &amp;quot;dbname=xyz00_davical user=xyz00_davical_app host=localhost&amp;quot;; &lt;br /&gt;
   $c-&amp;gt;use_persistent = true; &lt;br /&gt;
   $c-&amp;gt;sysabbr     = &#039;cal@example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;admin_email = &#039;admin@cal.example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;system_name = &#039;CalDAV Server example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;default_locale = &#039;de_DE&#039;; &lt;br /&gt;
   $c-&amp;gt;template_usr = array( &#039;active&#039; =&amp;gt; true, &lt;br /&gt;
                             &#039;locale&#039; =&amp;gt; &#039;de_DE&#039;, &lt;br /&gt;
                             &#039;date_format_type&#039; =&amp;gt; &#039;E&#039;, &lt;br /&gt;
                             &#039;email_ok&#039; =&amp;gt; date(&#039;Y-m-d&#039;) &lt;br /&gt;
                           ); &lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fast-CGI-Patch ===&lt;br /&gt;
&lt;br /&gt;
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION-Zeilen der HTTP-Anfragen  normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt. Die dort angeführte Lösung beruht allerdings wieder einmal auf der Annahme, daß man Superuser-Rechte hat.&lt;br /&gt;
&lt;br /&gt;
In der Shared-Hosting-Umgebung von Hostsharing kann die notwendige Anpassung über eine Rewrite-Anweisung in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt;-Datei gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd ~/doms/cal.example.org/var/davical/htdocs&lt;br /&gt;
$ cat &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Zeit enthält die mit DAViCal mitgelieferte Datei &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; nur auskommentierte Beispielanweisungen. Für alle Fälle sollte man aber darauf achten, daß man den bestehenden Inhalt von &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; nicht überschreibt: d.h. die neuen Eingaben mit &amp;lt;tt&amp;gt;&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt; der bestehenden Datei &#039;&#039;&#039;anhängen&#039;&#039;&#039;. Die neue Rewrite-Regel muß die letzte Regel in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; sein. Die Datei muß zudem für Apache lesbar sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 0644 .htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus muß noch die Datei &amp;lt;tt&amp;gt;davical/inc/HTTPAuthSession.php&amp;lt;/tt&amp;gt; angepasst werden. Hier ist die Variable &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt; ersetzt werden durch &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;REDIRECT_HTTP_AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt;. Außerdem gibt es noch einen Bug: Es wird an einer Stelle &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; statt &amp;lt;tt&amp;gt;explode&amp;lt;/tt&amp;gt; benutzt. &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; ist seit PHP 5.3.0 &#039;&#039;deprecated&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 @@ -101,10 +101,10 @@&lt;br /&gt;
      /**&lt;br /&gt;
      * Get HTTP Auth to work with PHP+FastCGI&lt;br /&gt;
      */&lt;br /&gt;
      if ( !isset($_SERVER[&#039;AUTHORIZATION&#039;]) &amp;amp;&amp;amp; isset($_SERVER[&#039;HTTP_AUTHORIZATION&#039;]) &amp;amp;&amp;amp; !empty($_SERVER[&#039;HTTP_AUTHORIZATION&#039;]))&lt;br /&gt;
        $_SERVER[&#039;AUTHORIZATION&#039;] = $_SERVER[&#039;HTTP_AUTHORIZATION&#039;];&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;split&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;explode&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
        if ($type == &#039;Basic&#039;) {&lt;br /&gt;
          list ($user, $pass) = explode (&amp;quot;:&amp;quot;, base64_decode($cred));&lt;br /&gt;
          $_SERVER[&#039;PHP_AUTH_USER&#039;] = $user;                                                                                                    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Webspace aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd ~/doms/cal.example.org&lt;br /&gt;
$ rm -r htdocs-ssl&lt;br /&gt;
$ ln -s var/davical/htdocs htdocs-ssl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Die Login-Seite der DAViCal-Web-Oberfläche]]&lt;br /&gt;
&lt;br /&gt;
Die URL des User-Interfaces lautet jetzt &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, erscheint an dieser URL die Login-Seite.&lt;br /&gt;
&lt;br /&gt;
Falls nicht, sorge mit &amp;lt;tt&amp;gt;chmod a+rx var/davical/htdocs&amp;lt;/tt&amp;gt; dafür, daß das Verzeichnis für Apache lesbar ist, und kontrolliere notfalls auch die Rechte der darin befindlichen Dateien.&lt;br /&gt;
&lt;br /&gt;
== Nutzung ==&lt;br /&gt;
&lt;br /&gt;
=== User anlegen und konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen Nutzer anzulegen: &#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;User Functions&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Create Principal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Feld                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Principal ID || &#039;&#039;New Principal&#039;&#039;  || Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt&lt;br /&gt;
|-&lt;br /&gt;
| Username || hans || Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL&lt;br /&gt;
|-&lt;br /&gt;
| Change Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Confirm Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Fullname || Hans Meier || Der Name des Nutzers&lt;br /&gt;
|-&lt;br /&gt;
| Email Address || hans@example.org || Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen&lt;br /&gt;
|-&lt;br /&gt;
| Locale || Deutsch || &lt;br /&gt;
|-&lt;br /&gt;
| Date Format Style || European || &lt;br /&gt;
|-&lt;br /&gt;
| Principal Type || Person || Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || &amp;amp;ndash; || Falls der User Adminrechte bekommen soll&lt;br /&gt;
|-&lt;br /&gt;
| Active || X || Soll der Nutzer aktiv geführt werden?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des &#039;&#039;&#039;ersten&#039;&#039;&#039; Nutzers erscheint eine Fehlermeldung: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;ERROR: SQL error &amp;quot;23505&amp;quot; - ERROR: duplicate key value violates unique constraint &amp;quot;principal_pkey&amp;quot;&amp;quot; &lt;br /&gt;
 Home calendar added. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Bug. Siehe auch [http://lists.morphoss.com/pipermail/davical-dev/2011/000117.html Thread in Dev-Mailingliste].&lt;br /&gt;
&lt;br /&gt;
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff über Client-Programme ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf den Kalender erfolgt über die URL: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/user/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* user = Name des angelegte Nutzers, also z.B. &#039;&#039;&#039;&amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* home = Name des angelegten Kalenders; dies ist standardmäßig &#039;&#039;&#039;&amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt;&#039;&#039;&#039;. Andere Kalender (&#039;&#039;collection&#039;&#039;) können im User-Interface vom Nutzer angelegt werden, oder durch einen Client, der MKCALENDAR implementiert hat, so z.B. iCal oder Mulberry&lt;br /&gt;
&lt;br /&gt;
==== Beispiel Thunderbird ====&lt;br /&gt;
&lt;br /&gt;
Ist in Thunderbird die Lightning-Erweiterung installiert, dann kann der Kalender folgendermaßen eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Datei&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Neu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Kalender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf den Folgenden Seiten ist auszuwählen:&lt;br /&gt;
* &#039;&#039;Im Netzwerk&#039;&#039;&lt;br /&gt;
* &#039;&#039;CalDAV&#039;&#039;&lt;br /&gt;
* Spezifische Angaben&lt;br /&gt;
** Name, z.B. &#039;&#039;hans@example&#039;&#039;&lt;br /&gt;
** Farbe: auswählen in welcher Farbe der Kalender angezeigt werden soll&lt;br /&gt;
** Alarm: ja&lt;br /&gt;
** Email: Email auswählen&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird es wahrscheinlich noch eine Wahrnung geben, daß das SSL-Zertifikat ungültig ist, da in der Standard Hostsharing Konfiguration das hostsharing-Zertifikat ausgeliefert wird. Dieses muß dann noch importiert und akzeptiert werden.&lt;br /&gt;
&lt;br /&gt;
Thunderbird fragt dann noch nach Nuternamen und Passwort und wenn man erlaubt diese im Programm zu speichern, dann loggt sich Thunderbird zukünfitg selbständig ein.&lt;br /&gt;
&lt;br /&gt;
===== Mehrere Kalender auf gleichem Server =====&lt;br /&gt;
&lt;br /&gt;
Hat man mehrere Kalender auf dem gleichen Server &amp;amp;ndash; also z.B. mehrere User oder für einen User mehrere &#039;&#039;collections&#039;&#039;, dann kann Thunderbird diese nicht unterscheiden. Der Passwort-Manager arbeitet auf Grundlage der Domain. Siehe auch [https://bugzilla.mozilla.org/show_bug.cgi?id=247486 Bugzilla].&lt;br /&gt;
&lt;br /&gt;
Diesen Bug kann man relativ einfach umgehen, indem man weitere Subdomains anlegt, die auf die gleiche Installation verweisen, also z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/example.org/subs-ssl&lt;br /&gt;
$ mkdir cal1&lt;br /&gt;
$ mkdir cal2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und jeweils eine &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; in die neuen Verzeichnis mit folgendem Inhalt schreibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule ^.htaccess$ - [F]&lt;br /&gt;
RewriteRule ^(.*)$ https://cal.example.org/$1 [P]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht vergessen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
chmod 0644 cal1/.htaccess&lt;br /&gt;
chmod 0644 cal2/.htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hat man z.B. für User &amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt; die Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;work&amp;lt;/tt&amp;gt; und für User &amp;lt;tt&amp;gt;maria&amp;lt;/tt&amp;gt; den Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und möchte diese aus derselben Thunderbird-Instanz benutzen, können folgende URL&#039;s in Thundebrird konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/hans/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal1.example.org/caldav.php/hans/work&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal2.example.org/caldav.php/maria/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting für kürzere URL&#039;s ==&lt;br /&gt;
&lt;br /&gt;
TODO: .htaccess Beispiel&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* WIKI von DAViCal: http://wiki.davical.org&lt;br /&gt;
** [http://wiki.davical.org/w/CalDAV_Clients CalDAV Clients]&lt;br /&gt;
&lt;br /&gt;
* Alternativen&lt;br /&gt;
** [[RadicaleCalDAVServer]]&lt;br /&gt;
** [[ChandlerServer]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3599</id>
		<title>DAViCal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3599"/>
		<updated>2013-06-19T15:53:30Z</updated>

		<summary type="html">&lt;p&gt;Apc00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen Client-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry, iCal, oder iPhone.&lt;br /&gt;
&lt;br /&gt;
Das CalDAV-Protokoll bietet viele Funktionen, die noch nicht von allen Clients unterstützt werden, darunter Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc.&lt;br /&gt;
&lt;br /&gt;
DAViCal ist in PHP geschrieben, lizensiert unter GPL.&lt;br /&gt;
&lt;br /&gt;
DAViCal erlaubt auch über das WebDAV-Protokoll Kalender zu lesen, aber nicht zu modifizieren.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
DAViCal erfordert folgende technische Ressourcen:&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Webserver mit PHP5&lt;br /&gt;
* Perl für den Installationsvorgang&lt;br /&gt;
* Ein Dateisystem mit erweiterten Attributen.&lt;br /&gt;
&lt;br /&gt;
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared-Hosting-Umgebung bei Hostsharing installiert und betreibt.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür [[Domainverwaltung#Lokale_Subdomains_durch_Aufschalten.3B_Delegieren|aufgeschalteten Subdomain]] über SSL betrieben wird. Für andere Konfigurationen, wie z.B. die Installation von DAViCal in einer als Unterverzeichnis von &amp;lt;tt&amp;gt;~/doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; erstellten Subdomain, muß dieses Verfahren leicht angepaßt werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von anderen Domaininhalten, PHP-Konfigurationen, oder sogar von anderen Domain-Administratoren, isoliert werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Subdomain aufschalten ===&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden folgende Domainkonfigurationsdaten als Beispiel verwendet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Subdomain || &amp;lt;tt&amp;gt;cal.example.org&amp;lt;/tt&amp;gt;  || Die Subdomain, unter der ein DAViCal-Server laufen soll&lt;br /&gt;
|-&lt;br /&gt;
| Domain-Admin || &amp;lt;tt&amp;gt;xyz00-hans&amp;lt;/tt&amp;gt; || Der User, dem die Subdomain delegiert wurde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quellen ===&lt;br /&gt;
&lt;br /&gt;
Neben dem Sourcecode vom eigentlichen DAViCal-Programm wird auch die PHP-Bibliothek [http://andrew.mcmillan.net.nz/projects/awl &#039;&#039;Andrew&#039;s Web Libraries&#039;&#039;] benötigt. Diese stammt vom gleichen Entwickler.&lt;br /&gt;
&lt;br /&gt;
Die jeweils neusten Versionen befinden sich unter:&lt;br /&gt;
* DAViCal: http://debian.mcmillan.net.nz/packages/davical/&lt;br /&gt;
* AWL: http://debian.mcmillan.net.nz/packages/awl/&lt;br /&gt;
&lt;br /&gt;
Hier jeweils die Source-Dateien (&amp;lt;tt&amp;gt;*.tar.gz&amp;lt;/tt&amp;gt;) benutzen.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd ~/doms/cal.example.org/var&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.53.tar.gz&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-1.1.1.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auspacken ====&lt;br /&gt;
&lt;br /&gt;
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen, die Dateierzeungsmaske temporär auf 022 setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 022&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann die heruntergeladenen Tarballs mit &amp;lt;tt&amp;gt;tar&amp;lt;/tt&amp;gt; auspacken:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ tar xfvz awl-0.46.tar.gz&lt;br /&gt;
$ tar xfvz davical-0.9.9.4.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann zwei symbolische Links mit den generischen Namen &amp;lt;tt&amp;gt;davical&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;awl&amp;lt;/tt&amp;gt; erzeugen, die auf die installierten Versionen zeigen (dies erleichtert einen späteren Versionswechsel):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ ln -s  awl-0.53  awl&lt;br /&gt;
$ ln -s  davical-1.1.1  davical&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und zum Schluß die ursprüngliche Dateierzeugungsmaske wiederherstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 077&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL vorbereiten ===&lt;br /&gt;
&lt;br /&gt;
DAViCal benötigt eine eigene PostgreSQL-Datenbank sowie 2 Datenbanknutzer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DAViCal enthält ein eigenes Installations-Skript, das die erforderlichen Datenbank, Datenbanknutzer, prozedurale Sprache, und Datenbanktabellen anlegt und initialisiert. Dies liegt unter &amp;lt;tt&amp;gt;davical/dba/create-database.sh&amp;lt;/tt&amp;gt;. Allerdings basiert das Skript auf der Annahme, daß man Superuser-Rechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist. In diesem Abschnitt wird deshalb beschrieben, wie man die entsprechenden Vorgänge in Hostsharing &amp;quot;von Hand&amp;quot; bewerkstelligt.&lt;br /&gt;
&lt;br /&gt;
==== Datenbank und Datenbanknutzer anlegen ====&lt;br /&gt;
&lt;br /&gt;
In dieser Anleitung werden folgende Namen für die Datenbank und deren Nutzer verwendet. Das Paket-Kürzel &amp;lt;tt&amp;gt;xyz00&amp;lt;/tt&amp;gt; ist natürlich durch das des betreffenden Pakets zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| DB-Admin || &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, dem die Datenbank gehört und der administrative Tätigkeiten durchführt.&lt;br /&gt;
|-&lt;br /&gt;
| DB-Nutzer || &amp;lt;tt&amp;gt;xyz00_davical_app&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzername, den DAViCal benutzt, um in der Datenbank zu lesen und zu schreiben.&lt;br /&gt;
|-&lt;br /&gt;
| Datenbank || &amp;lt;tt&amp;gt;xyz00_davical&amp;lt;/tt&amp;gt;  || Die PostgreSQL-Datenbank, die DAViCals Daten enthält.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Umgebungsvariablen und PostgreSQL-Paßwort ====&lt;br /&gt;
&lt;br /&gt;
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Siehe dazu die Anleitungen auf der Seite [[PostgreSQL]] und [[Datenbanken]]. Diese Schritte müssen ggf. vom Paket-Admin vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ su xyz00&lt;br /&gt;
$ hsadmin -c postgresqluser.add --set:name=xyz00_davical_dba --set:password=geheim&lt;br /&gt;
$ hsadmin -c postgresqluser.add --set:name=xyz00_davical_app --set:password=geheim&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Besitzer der DAViCal-Datenbank &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; angeben; als Zeichenkodierung ist das Default &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; richtig:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ hsadmin -c postgresqldb.add --set:name=xyz00_davical --set:owner=xyz00_davical_dba&lt;br /&gt;
$ exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sowohl für die weitere Installation als auch für den Betrieb des Servers ist es am einfachsten, die Passwörter in eine &amp;lt;tt&amp;gt;[http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html .pgpass]&amp;lt;/tt&amp;gt;-Datei zu schreiben: so müssen sie weder in den PHP-Dateien angegeben noch während der Installation manuell eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_dba:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_app:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ chmod 0600 ~/.pgpass&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur weiteren Bequemlichkeit Umgebungsvariablen setzen, so daß beim Aufruf von &amp;lt;tt&amp;gt;psql&amp;lt;/tt&amp;gt; über die Kommandozeile keine Datenbank- und Nutzernamen eingegeben werden müssen. Diese Angaben gehen mit Beenden der Shell-Sitzung verloren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ PGHOST=localhost &lt;br /&gt;
$ PGUSER=xyz00_davical_dba&lt;br /&gt;
$ PGDATABASE=xyz00_davical &lt;br /&gt;
$ export PGHOST PGUSER PGDATABASE &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PL/pgSQL installieren ====&lt;br /&gt;
&lt;br /&gt;
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese wird durch den folgenden Befehl angelegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;CREATE LANGUAGE plpgsql;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Datenbank-Tabellen anlegen und initialisieren ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Befehle zum Anlegen der Datenbanktabellen können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die Umgebungsvariablen &amp;lt;tt&amp;gt;PGHOST&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;PGUSER&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;PGDATABASE&amp;lt;/tt&amp;gt; gesetzt wurden und die &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt;-Datei geschrieben wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -f awl/dba/awl-tables.sql&lt;br /&gt;
$ psql -A -f awl/dba/schema-management.sql&lt;br /&gt;
$ psql -A -f davical/dba/davical.sql&lt;br /&gt;
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app&lt;br /&gt;
$ psql -A -f davical/dba/base-data.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den DAViCal-Admin muß noch ein Passwort gesetzt werden &amp;amp;ndash; &#039;&amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;&#039; vor dem Passwort ist hier wichtig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;UPDATE usr SET password = &#039;**geheim&#039; WHERE user_no = 1;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
DAViCal wird durch Angaben in der PHP-Datei &amp;lt;tt&amp;gt;davical/config/config.php&amp;lt;/tt&amp;gt; konfiguriert. Der folgende Befehl erzeugt eine Beispiel-Datei; weitere Beispiele befinden sich im Verzeichnis &amp;lt;tt&amp;gt;davical/config/&amp;lt;/tt&amp;gt;. Die Konfigurationsparameter sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] beschrieben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat &amp;gt; davical/config/config.php&lt;br /&gt;
   $c-&amp;gt;pg_connect[] = &amp;quot;dbname=xyz00_davical user=xyz00_davical_app host=localhost&amp;quot;; &lt;br /&gt;
   $c-&amp;gt;use_persistent = true; &lt;br /&gt;
   $c-&amp;gt;sysabbr     = &#039;cal@example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;admin_email = &#039;admin@cal.example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;system_name = &#039;CalDAV Server example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;default_locale = &#039;de_DE&#039;; &lt;br /&gt;
   $c-&amp;gt;template_usr = array( &#039;active&#039; =&amp;gt; true, &lt;br /&gt;
                             &#039;locale&#039; =&amp;gt; &#039;de_DE&#039;, &lt;br /&gt;
                             &#039;date_format_type&#039; =&amp;gt; &#039;E&#039;, &lt;br /&gt;
                             &#039;email_ok&#039; =&amp;gt; date(&#039;Y-m-d&#039;) &lt;br /&gt;
                           ); &lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fast-CGI-Patch ===&lt;br /&gt;
&lt;br /&gt;
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION-Zeilen der HTTP-Anfragen  normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt. Die dort angeführte Lösung beruht allerdings wieder einmal auf der Annahme, daß man Superuser-Rechte hat.&lt;br /&gt;
&lt;br /&gt;
In der Shared-Hosting-Umgebung von Hostsharing kann die notwendige Anpassung über eine Rewrite-Anweisung in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt;-Datei gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd ~/doms/cal.example.org/var/davical/htdocs&lt;br /&gt;
$ cat &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Zeit enthält die mit DAViCal mitgelieferte Datei &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; nur auskommentierte Beispielanweisungen. Für alle Fälle sollte man aber darauf achten, daß man den bestehenden Inhalt von &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; nicht überschreibt: d.h. die neuen Eingaben mit &amp;lt;tt&amp;gt;&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt; der bestehenden Datei &#039;&#039;&#039;anhängen&#039;&#039;&#039;. Die neue Rewrite-Regel muß die letzte Regel in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; sein. Die Datei muß zudem für Apache lesbar sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 0644 .htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus muß noch die Datei &amp;lt;tt&amp;gt;davical/inc/HTTPAuthSession.php&amp;lt;/tt&amp;gt; angepasst werden. Hier ist die Variable &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt; ersetzt werden durch &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;REDIRECT_HTTP_AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt;. Außerdem gibt es noch einen Bug: Es wird an einer Stelle &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; statt &amp;lt;tt&amp;gt;explode&amp;lt;/tt&amp;gt; benutzt. &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; ist seit PHP 5.3.0 &#039;&#039;deprecated&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 @@ -101,10 +101,10 @@&lt;br /&gt;
      /**&lt;br /&gt;
      * Get HTTP Auth to work with PHP+FastCGI&lt;br /&gt;
      */&lt;br /&gt;
      if ( !isset($_SERVER[&#039;AUTHORIZATION&#039;]) &amp;amp;&amp;amp; isset($_SERVER[&#039;HTTP_AUTHORIZATION&#039;]) &amp;amp;&amp;amp; !empty($_SERVER[&#039;HTTP_AUTHORIZATION&#039;]))&lt;br /&gt;
        $_SERVER[&#039;AUTHORIZATION&#039;] = $_SERVER[&#039;HTTP_AUTHORIZATION&#039;];&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;split&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;explode&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
        if ($type == &#039;Basic&#039;) {&lt;br /&gt;
          list ($user, $pass) = explode (&amp;quot;:&amp;quot;, base64_decode($cred));&lt;br /&gt;
          $_SERVER[&#039;PHP_AUTH_USER&#039;] = $user;                                                                                                    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]&lt;br /&gt;
=== Webspace aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd ~/doms/cal.example.org&lt;br /&gt;
$ rm -r htdocs-ssl&lt;br /&gt;
$ ln -s var/davical/htdocs htdocs-ssl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die URL des User-Interfaces lautet jetzt &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, erscheint an dieser URL der Login-Screen.&lt;br /&gt;
&lt;br /&gt;
== Nutzung ==&lt;br /&gt;
&lt;br /&gt;
=== User anlegen und konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen Nutzer anzulegen: &#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;User Functions&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Create Principal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Feld                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Principal ID || &#039;&#039;New Principal&#039;&#039;  || Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt&lt;br /&gt;
|-&lt;br /&gt;
| Username || hans || Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL&lt;br /&gt;
|-&lt;br /&gt;
| Change Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Confirm Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Fullname || Hans Meier || Der Name des Nutzers&lt;br /&gt;
|-&lt;br /&gt;
| Email Address || hans@example.org || Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen&lt;br /&gt;
|-&lt;br /&gt;
| Locale || Deutsch || &lt;br /&gt;
|-&lt;br /&gt;
| Date Format Style || European || &lt;br /&gt;
|-&lt;br /&gt;
| Principal Type || Person || Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || &amp;amp;ndash; || Falls der User Adminrechte bekommen soll&lt;br /&gt;
|-&lt;br /&gt;
| Active || X || Soll der Nutzer aktiv geführt werden?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des &#039;&#039;&#039;ersten&#039;&#039;&#039; Nutzers erscheint eine Fehlermeldung: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;ERROR: SQL error &amp;quot;23505&amp;quot; - ERROR: duplicate key value violates unique constraint &amp;quot;principal_pkey&amp;quot;&amp;quot; &lt;br /&gt;
 Home calendar added. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Bug. Siehe auch [http://lists.morphoss.com/pipermail/davical-dev/2011/000117.html Thread in Dev-Mailingliste].&lt;br /&gt;
&lt;br /&gt;
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff über Client-Programme ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf den Kalender erfolgt über die URL: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/user/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* user = Name des angelegte Nutzers, also z.B. &#039;&#039;&#039;&amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* home = Name des angelegten Kalenders; dies ist standardmäßig &#039;&#039;&#039;&amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt;&#039;&#039;&#039;. Andere Kalender (&#039;&#039;collection&#039;&#039;) können im User-Interface vom Nutzer angelegt werden, oder durch einen Client, der MKCALENDAR implementiert hat, so z.B. iCal oder Mulberry&lt;br /&gt;
&lt;br /&gt;
==== Beispiel Thunderbird ====&lt;br /&gt;
&lt;br /&gt;
Ist in Thunderbird die Lightning-Erweiterung installiert, dann kann der Kalender folgendermaßen eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Datei&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Neu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Kalender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf den Folgenden Seiten ist auszuwählen:&lt;br /&gt;
* &#039;&#039;Im Netzwerk&#039;&#039;&lt;br /&gt;
* &#039;&#039;CalDAV&#039;&#039;&lt;br /&gt;
* Spezifische Angaben&lt;br /&gt;
** Name, z.B. &#039;&#039;hans@example&#039;&#039;&lt;br /&gt;
** Farbe: auswählen in welcher Farbe der Kalender angezeigt werden soll&lt;br /&gt;
** Alarm: ja&lt;br /&gt;
** Email: Email auswählen&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird es wahrscheinlich noch eine Wahrnung geben, daß das SSL-Zertifikat ungültig ist, da in der Standard Hostsharing Konfiguration das hostsharing-Zertifikat ausgeliefert wird. Dieses muß dann noch importiert und akzeptiert werden.&lt;br /&gt;
&lt;br /&gt;
Thunderbird fragt dann noch nach Nuternamen und Passwort und wenn man erlaubt diese im Programm zu speichern, dann loggt sich Thunderbird zukünfitg selbständig ein.&lt;br /&gt;
&lt;br /&gt;
===== Mehrere Kalender auf gleichem Server =====&lt;br /&gt;
&lt;br /&gt;
Hat man mehrere Kalender auf dem gleichen Server &amp;amp;ndash; also z.B. mehrere User oder für einen User mehrere &#039;&#039;collections&#039;&#039;, dann kann Thunderbird diese nicht unterscheiden. Der Passwort-Manager arbeitet auf Grundlage der Domain. Siehe auch [https://bugzilla.mozilla.org/show_bug.cgi?id=247486 Bugzilla].&lt;br /&gt;
&lt;br /&gt;
Diesen Bug kann man relativ einfach umgehen, indem man weitere Subdomains anlegt, die auf die gleiche Installation verweisen, also z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/example.org/subs-ssl&lt;br /&gt;
$ mkdir cal1&lt;br /&gt;
$ mkdir cal2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und jeweils eine &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; in die neuen Verzeichnis mit folgendem Inhalt schreibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule ^.htaccess$ - [F]&lt;br /&gt;
RewriteRule ^(.*)$ https://cal.example.org/$1 [P]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht vergessen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
chmod 0644 cal1/.htaccess&lt;br /&gt;
chmod 0644 cal2/.htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hat man z.B. für User &amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt; die Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;work&amp;lt;/tt&amp;gt; und für User &amp;lt;tt&amp;gt;maria&amp;lt;/tt&amp;gt; den Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und möchte diese aus derselben Thunderbird-Instanz benutzen, können folgende URL&#039;s in Thundebrird konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/hans/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal1.example.org/caldav.php/hans/work&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal2.example.org/caldav.php/maria/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting für kürzere URL&#039;s ==&lt;br /&gt;
&lt;br /&gt;
TODO: .htaccess Beispiel&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* WIKI von DAViCal: http://wiki.davical.org&lt;br /&gt;
** [http://wiki.davical.org/w/CalDAV_Clients CalDAV Clients]&lt;br /&gt;
&lt;br /&gt;
* Alternativen&lt;br /&gt;
** [[RadicaleCalDAVServer]]&lt;br /&gt;
** [[ChandlerServer]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3598</id>
		<title>DAViCal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3598"/>
		<updated>2013-06-19T14:35:02Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* PostgreSQL vorbereiten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen Client-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry, iCal, oder iPhone.&lt;br /&gt;
&lt;br /&gt;
Das CalDAV-Protokoll bietet viele Funktionen, die noch nicht von allen Clients unterstützt werden, darunter Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc.&lt;br /&gt;
&lt;br /&gt;
DAViCal ist in PHP geschrieben, lizensiert unter GPL.&lt;br /&gt;
&lt;br /&gt;
DAViCal erlaubt auch über das WebDAV-Protokoll Kalender zu lesen, aber nicht zu modifizieren.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
DAViCal erfordert folgende technische Ressourcen:&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Webserver mit PHP5&lt;br /&gt;
* Perl für den Installationsvorgang&lt;br /&gt;
* Ein Dateisystem mit erweiterten Attributen.&lt;br /&gt;
&lt;br /&gt;
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared-Hosting-Umgebung bei Hostsharing installiert und betreibt.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür [[Domainverwaltung#Lokale_Subdomains_durch_Aufschalten.3B_Delegieren|aufgeschalteten Subdomain]] über SSL betrieben wird. Für andere Konfigurationen, wie z.B. die Installation von DAViCal in einer als Unterverzeichnis von &amp;lt;tt&amp;gt;~/doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; erstellten Subdomain, muß dieses Verfahren leicht angepaßt werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von anderen Domaininhalten, PHP-Konfigurationen, oder sogar von anderen Domain-Administratoren, isoliert werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Subdomain aufschalten ===&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden folgende Domainkonfigurationsdaten als Beispiel verwendet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Subdomain || &amp;lt;tt&amp;gt;cal.example.org&amp;lt;/tt&amp;gt;  || Die Subdomain, unter der ein DAViCal-Server laufen soll&lt;br /&gt;
|-&lt;br /&gt;
| Domain-Admin || &amp;lt;tt&amp;gt;xyz00-hans&amp;lt;/tt&amp;gt; || Der User, dem die Subdomain delegiert wurde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quellen ===&lt;br /&gt;
&lt;br /&gt;
Neben dem Sourcecode vom eigentlichen DAViCal-Programm wird auch die PHP-Bibliothek [http://andrew.mcmillan.net.nz/projects/awl &#039;&#039;Andrew&#039;s Web Libraries&#039;&#039;] benötigt. Diese stammt vom gleichen Entwickler.&lt;br /&gt;
&lt;br /&gt;
Die jeweils neusten Versionen befinden sich unter:&lt;br /&gt;
* DAViCal: http://debian.mcmillan.net.nz/packages/davical/&lt;br /&gt;
* AWL: http://debian.mcmillan.net.nz/packages/awl/&lt;br /&gt;
&lt;br /&gt;
Hier jeweils die Source-Dateien (&amp;lt;tt&amp;gt;*.tar.gz&amp;lt;/tt&amp;gt;) benutzen.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd ~/doms/cal.example.org/var&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.53.tar.gz&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-1.1.1.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auspacken ====&lt;br /&gt;
&lt;br /&gt;
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen, die Dateierzeungsmaske temporär auf 022 setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 022&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann die heruntergeladenen Tarballs mit &amp;lt;tt&amp;gt;tar&amp;lt;/tt&amp;gt; auspacken:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ tar xfvz awl-0.46.tar.gz&lt;br /&gt;
$ tar xfvz davical-0.9.9.4.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann zwei symbolische Links mit den generischen Namen &amp;lt;tt&amp;gt;davical&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;awl&amp;lt;/tt&amp;gt; erzeugen, die auf die installierten Versionen zeigen (dies erleichtert einen späteren Versionswechsel):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ ln -s  awl-0.53  awl&lt;br /&gt;
$ ln -s  davical-1.1.1  davical&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und zum Schluß die ursprüngliche Dateierzeugungsmaske wiederherstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 077&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL vorbereiten ===&lt;br /&gt;
&lt;br /&gt;
DAViCal benötigt eine eigene PostgreSQL-Datenbank sowie 2 Datenbanknutzer.&lt;br /&gt;
&lt;br /&gt;
==== Datenbank und Datenbanknutzer anlegen ====&lt;br /&gt;
&lt;br /&gt;
In dieser Anleitung werden folgende Namen für die Datenbank und deren Nutzer verwendet. Das Paket-Kürzel &amp;lt;tt&amp;gt;xyz00&amp;lt;/tt&amp;gt; ist natürlich durch das des betreffenden Pakets zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| DB-Admin || &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, dem die Datenbank gehört und der administrative Tätigkeiten durchführt.&lt;br /&gt;
|-&lt;br /&gt;
| DB-Nutzer || &amp;lt;tt&amp;gt;xyz00_davical_app&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzername, den DAViCal benutzt, um in der Datenbank zu lesen und zu schreiben.&lt;br /&gt;
|-&lt;br /&gt;
| Datenbank || &amp;lt;tt&amp;gt;xyz00_davical&amp;lt;/tt&amp;gt;  || Die PostgreSQL-Datenbank, die DAViCals Daten enthält.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Umgebungsvariablen und PostgreSQL-Paßwort ====&lt;br /&gt;
&lt;br /&gt;
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Siehe dazu die Anleitungen auf der Seite [[PostgreSQL]] und [[Datenbanken]]. Diese Schritte müssen ggf. vom Paket-Admin vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ su xyz00&lt;br /&gt;
$ hsadmin -c postgresqluser.add --set:name=xyz00_davical_dba --set:password=geheim&lt;br /&gt;
$ hsadmin -c postgresqluser.add --set:name=xyz00_davical_app --set:password=geheim&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Besitzer der DAViCal-Datenbank &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; angeben; als Zeichenkodierung ist das Default &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; richtig:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ hsadmin -c postgresqldb.add --set:name=xyz00_davical --set:owner=xyz00_davical_dba&lt;br /&gt;
$ exit&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sowohl für die weitere Installation als auch für den Betrieb des Servers ist es am einfachsten, die Passwörter in eine &amp;lt;tt&amp;gt;[http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html .pgpass]&amp;lt;/tt&amp;gt;-Datei zu schreiben: so müssen sie weder in den PHP-Dateien angegeben noch während der Installation manuell eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_dba:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_app:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ chmod 0600 ~/.pgpass&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur weiteren Bequemlichkeit Umgebungsvariablen setzen, so daß beim Aufruf von &amp;lt;tt&amp;gt;psql&amp;lt;/tt&amp;gt; über die Kommandozeile keine Datenbank- und Nutzernamen eingegeben werden müssen. Diese Angaben gehen mit Beenden der Shell-Sitzung verloren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ PGHOST=localhost &lt;br /&gt;
$ PGUSER=xyz00_davical_dba&lt;br /&gt;
$ PGDATABASE=xyz00_davical &lt;br /&gt;
$ export PGHOST PGUSER PGDATABASE &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PL/pgSQL installieren ====&lt;br /&gt;
&lt;br /&gt;
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese wird durch den folgenden Befehl angelegt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;CREATE LANGUAGE plpgsql;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Tabellen anlegen und initialisieren ===&lt;br /&gt;
&lt;br /&gt;
DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter &amp;lt;tt&amp;gt;davical/dba/create-database.sh&amp;lt;/tt&amp;gt;. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen der Datenbank, der -Nuter und kreieren von PL/pgSQL wurde bereits oben beschrieben. Darüberhinaus sind noch folgende Befehle auszuführen. Diese können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die &amp;lt;tt&amp;gt;PG*&amp;lt;/tt&amp;gt; Umgebungsvariablen gesetzt wurden und die &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt;-Datei gefüllt wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -f awl/dba/awl-tables.sql&lt;br /&gt;
$ psql -A -f awl/dba/schema-management.sql&lt;br /&gt;
$ psql -A -f davical/dba/davical.sql&lt;br /&gt;
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app&lt;br /&gt;
The database is version 8.4 currently at revision 1.2.9. &lt;br /&gt;
No patches were applied. &lt;br /&gt;
Supported locales updated. &lt;br /&gt;
Updated view: dav_principal.sql applied. &lt;br /&gt;
CalDAV functions updated. &lt;br /&gt;
RRULE functions updated. &lt;br /&gt;
Database permissions updated. &lt;br /&gt;
$ psql -A -f davical/dba/base-data.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den DAViCal-Admin muß noch ein Passwort gesetzt werden &amp;amp;ndash; &#039;&amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;&#039; vor dem Passwort ist hier wichtig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;UPDATE usr SET password = &#039;**geheim&#039; WHERE user_no = 1;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
DAViCal kann über eine &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat &amp;gt; davical/config/config.php&lt;br /&gt;
   $c-&amp;gt;pg_connect[] = &amp;quot;dbname=xyz00_davical user=xyz00_davical_app host=localhost&amp;quot;; &lt;br /&gt;
   $c-&amp;gt;use_persistent = true; &lt;br /&gt;
   $c-&amp;gt;sysabbr     = &#039;cal@example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;admin_email = &#039;admin@cal.example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;system_name = &#039;CalDAV Server example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;default_locale = &#039;de_DE&#039;; &lt;br /&gt;
   $c-&amp;gt;template_usr = array( &#039;active&#039; =&amp;gt; true, &lt;br /&gt;
                             &#039;locale&#039; =&amp;gt; &#039;de_DE&#039;, &lt;br /&gt;
                             &#039;date_format_type&#039; =&amp;gt; &#039;E&#039;, &lt;br /&gt;
                             &#039;email_ok&#039; =&amp;gt; date(&#039;Y-m-d&#039;) &lt;br /&gt;
                           ); &lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fast-CGI Patch ===&lt;br /&gt;
&lt;br /&gt;
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.&lt;br /&gt;
&lt;br /&gt;
In der Shared-Hosting-Umgebung von Hostsharing kann dies auch über ein Redirect in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt;-Datei gemacht gelöst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/htdocs-ssl&lt;br /&gt;
$ cat &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Regel muß die letzte in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; sein. Die Datei muß für alle lesbar sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 0644 .htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus muß noch die Datei &amp;lt;tt&amp;gt;davical/inc/HTTPAuthSession.php&amp;lt;/tt&amp;gt; angepasst werden. Hier ist die Variable &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt; ersetzt werden durch &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;REDIRECT_HTTP_AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt;. Außerdem gibt es noch einen Bug: Es wird an einer Stelle &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; statt &amp;lt;tt&amp;gt;explode&amp;lt;/tt&amp;gt; benutzt. &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; ist seit PHP 5.3.0 &#039;&#039;deprecated&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 @@ -87,8 +87,8 @@&lt;br /&gt;
      /**&lt;br /&gt;
      * Get HTTP Auth to work with PHP+FastCGI&lt;br /&gt;
      */&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;split&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;explode&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
        if ($type == &#039;Basic&#039;) {&lt;br /&gt;
          list ($user, $pass) = explode (&amp;quot;:&amp;quot;, base64_decode($cred));&lt;br /&gt;
          $_SERVER[&#039;PHP_AUTH_USER&#039;] = $user;                                                                                                    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]&lt;br /&gt;
=== Webspace aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org&lt;br /&gt;
$ rm htdocs-ssl&lt;br /&gt;
$ ln -s var/davical/htdocs htdocs-ssl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die URL des User-Interfaces lautet: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, erscheint der Login-Screen.&lt;br /&gt;
&lt;br /&gt;
== Nutzung ==&lt;br /&gt;
&lt;br /&gt;
=== User anlegen und konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen Nutzer anzulegen: &#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;User Functions&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Create Principal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Feld                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Principal ID || &#039;&#039;New Principal&#039;&#039;  || Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt&lt;br /&gt;
|-&lt;br /&gt;
| Username || hans || Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL&lt;br /&gt;
|-&lt;br /&gt;
| Change Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Confirm Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Fullname || Hans Meier || Der Name des Nutzers&lt;br /&gt;
|-&lt;br /&gt;
| Email Address || hans@example.org || Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen&lt;br /&gt;
|-&lt;br /&gt;
| Locale || Deutsch || &lt;br /&gt;
|-&lt;br /&gt;
| Date Format Style || European || &lt;br /&gt;
|-&lt;br /&gt;
| Principal Type || Person || Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || &amp;amp;ndash; || Falls der User Adminrechte bekommen soll&lt;br /&gt;
|-&lt;br /&gt;
| Active || X || Soll der Nutzer aktiv geführt werden?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des &#039;&#039;&#039;ersten&#039;&#039;&#039; Nutzers erscheint eine Fehlermeldung: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;ERROR: SQL error &amp;quot;23505&amp;quot; - ERROR: duplicate key value violates unique constraint &amp;quot;principal_pkey&amp;quot;&amp;quot; &lt;br /&gt;
 Home calendar added. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Bug. Siehe auch [http://lists.morphoss.com/pipermail/davical-dev/2011/000117.html Thread in Dev-Mailingliste].&lt;br /&gt;
&lt;br /&gt;
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff über Client-Programme ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf den Kalender erfolgt über die URL: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/user/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* user = Name des angelegte Nutzers, also z.B. &#039;&#039;&#039;&amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* home = Name des angelegten Kalenders; dies ist standardmäßig &#039;&#039;&#039;&amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt;&#039;&#039;&#039;. Andere Kalender (&#039;&#039;collection&#039;&#039;) können im User-Interface vom Nutzer angelegt werden, oder durch einen Client, der MKCALENDAR implementiert hat, so z.B. iCal oder Mulberry&lt;br /&gt;
&lt;br /&gt;
==== Beispiel Thunderbird ====&lt;br /&gt;
&lt;br /&gt;
Ist in Thunderbird die Lightning-Erweiterung installiert, dann kann der Kalender folgendermaßen eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Datei&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Neu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Kalender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf den Folgenden Seiten ist auszuwählen:&lt;br /&gt;
* &#039;&#039;Im Netzwerk&#039;&#039;&lt;br /&gt;
* &#039;&#039;CalDAV&#039;&#039;&lt;br /&gt;
* Spezifische Angaben&lt;br /&gt;
** Name, z.B. &#039;&#039;hans@example&#039;&#039;&lt;br /&gt;
** Farbe: auswählen in welcher Farbe der Kalender angezeigt werden soll&lt;br /&gt;
** Alarm: ja&lt;br /&gt;
** Email: Email auswählen&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird es wahrscheinlich noch eine Wahrnung geben, daß das SSL-Zertifikat ungültig ist, da in der Standard Hostsharing Konfiguration das hostsharing-Zertifikat ausgeliefert wird. Dieses muß dann noch importiert und akzeptiert werden.&lt;br /&gt;
&lt;br /&gt;
Thunderbird fragt dann noch nach Nuternamen und Passwort und wenn man erlaubt diese im Programm zu speichern, dann loggt sich Thunderbird zukünfitg selbständig ein.&lt;br /&gt;
&lt;br /&gt;
===== Mehrere Kalender auf gleichem Server =====&lt;br /&gt;
&lt;br /&gt;
Hat man mehrere Kalender auf dem gleichen Server &amp;amp;ndash; also z.B. mehrere User oder für einen User mehrere &#039;&#039;collections&#039;&#039;, dann kann Thunderbird diese nicht unterscheiden. Der Passwort-Manager arbeitet auf Grundlage der Domain. Siehe auch [https://bugzilla.mozilla.org/show_bug.cgi?id=247486 Bugzilla].&lt;br /&gt;
&lt;br /&gt;
Diesen Bug kann man relativ einfach umgehen, indem man weitere Subdomains anlegt, die auf die gleiche Installation verweisen, also z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/example.org/subs-ssl&lt;br /&gt;
$ mkdir cal1&lt;br /&gt;
$ mkdir cal2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und jeweils eine &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; in die neuen Verzeichnis mit folgendem Inhalt schreibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule ^.htaccess$ - [F]&lt;br /&gt;
RewriteRule ^(.*)$ https://cal.example.org/$1 [P]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht vergessen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
chmod 0644 cal1/.htaccess&lt;br /&gt;
chmod 0644 cal2/.htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hat man z.B. für User &amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt; die Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;work&amp;lt;/tt&amp;gt; und für User &amp;lt;tt&amp;gt;maria&amp;lt;/tt&amp;gt; den Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und möchte diese aus derselben Thunderbird-Instanz benutzen, können folgende URL&#039;s in Thundebrird konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/hans/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal1.example.org/caldav.php/hans/work&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal2.example.org/caldav.php/maria/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting für kürzere URL&#039;s ==&lt;br /&gt;
&lt;br /&gt;
TODO: .htaccess Beispiel&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* WIKI von DAViCal: http://wiki.davical.org&lt;br /&gt;
** [http://wiki.davical.org/w/CalDAV_Clients CalDAV Clients]&lt;br /&gt;
&lt;br /&gt;
* Alternativen&lt;br /&gt;
** [[RadicaleCalDAVServer]]&lt;br /&gt;
** [[ChandlerServer]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3597</id>
		<title>DAViCal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3597"/>
		<updated>2013-06-19T14:02:33Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Quellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen Client-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry, iCal, oder iPhone.&lt;br /&gt;
&lt;br /&gt;
Das CalDAV-Protokoll bietet viele Funktionen, die noch nicht von allen Clients unterstützt werden, darunter Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc.&lt;br /&gt;
&lt;br /&gt;
DAViCal ist in PHP geschrieben, lizensiert unter GPL.&lt;br /&gt;
&lt;br /&gt;
DAViCal erlaubt auch über das WebDAV-Protokoll Kalender zu lesen, aber nicht zu modifizieren.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
DAViCal erfordert folgende technische Ressourcen:&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Webserver mit PHP5&lt;br /&gt;
* Perl für den Installationsvorgang&lt;br /&gt;
* Ein Dateisystem mit erweiterten Attributen.&lt;br /&gt;
&lt;br /&gt;
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared-Hosting-Umgebung bei Hostsharing installiert und betreibt.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür [[Domainverwaltung#Lokale_Subdomains_durch_Aufschalten.3B_Delegieren|aufgeschalteten Subdomain]] über SSL betrieben wird. Für andere Konfigurationen, wie z.B. die Installation von DAViCal in einer als Unterverzeichnis von &amp;lt;tt&amp;gt;~/doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; erstellten Subdomain, muß dieses Verfahren leicht angepaßt werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von anderen Domaininhalten, PHP-Konfigurationen, oder sogar von anderen Domain-Administratoren, isoliert werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Subdomain aufschalten ===&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden folgende Domainkonfigurationsdaten als Beispiel verwendet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Subdomain || &amp;lt;tt&amp;gt;cal.example.org&amp;lt;/tt&amp;gt;  || Die Subdomain, unter der ein DAViCal-Server laufen soll&lt;br /&gt;
|-&lt;br /&gt;
| Domain-Admin || &amp;lt;tt&amp;gt;xyz00-hans&amp;lt;/tt&amp;gt; || Der User, dem die Subdomain delegiert wurde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quellen ===&lt;br /&gt;
&lt;br /&gt;
Neben dem Sourcecode vom eigentlichen DAViCal-Programm wird auch die PHP-Bibliothek [http://andrew.mcmillan.net.nz/projects/awl &#039;&#039;Andrew&#039;s Web Libraries&#039;&#039;] benötigt. Diese stammt vom gleichen Entwickler.&lt;br /&gt;
&lt;br /&gt;
Die jeweils neusten Versionen befinden sich unter:&lt;br /&gt;
* DAViCal: http://debian.mcmillan.net.nz/packages/davical/&lt;br /&gt;
* AWL: http://debian.mcmillan.net.nz/packages/awl/&lt;br /&gt;
&lt;br /&gt;
Hier jeweils die Source-Dateien (&amp;lt;tt&amp;gt;*.tar.gz&amp;lt;/tt&amp;gt;) benutzen.&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd ~/doms/cal.example.org/var&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.53.tar.gz&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-1.1.1.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auspacken ====&lt;br /&gt;
&lt;br /&gt;
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen, die Dateierzeungsmaske temporär auf 022 setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 022&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann die heruntergeladenen Tarballs mit &amp;lt;tt&amp;gt;tar&amp;lt;/tt&amp;gt; auspacken:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ tar xfvz awl-0.46.tar.gz&lt;br /&gt;
$ tar xfvz davical-0.9.9.4.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann zwei symbolische Links mit den generischen Namen &amp;lt;tt&amp;gt;davical&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;awl&amp;lt;/tt&amp;gt; erzeugen, die auf die installierten Versionen zeigen (dies erleichtert einen späteren Versionswechsel):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ ln -s  awl-0.53  awl&lt;br /&gt;
$ ln -s  davical-1.1.1  davical&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und zum Schluß die ursprüngliche Dateierzeugungsmaske wiederherstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 077&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL vorbereiten ===&lt;br /&gt;
&lt;br /&gt;
Es wird eine eigene PostgreSQL-Datenbank benötigt, sowie 2 Datenbanknutzer.&lt;br /&gt;
&lt;br /&gt;
==== Datenbank und -Nutzer anlegen ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| DB-Admin || &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, dem die Datenbank gehört und administrative Tätigkeiten durchführt&lt;br /&gt;
|-&lt;br /&gt;
| DB-Nutzer || &amp;lt;tt&amp;gt;xyz00_davical_app&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, der über DAViCal auf die Datenbank lesen/schreibend zugreift&lt;br /&gt;
|-&lt;br /&gt;
| Datenbank || &amp;lt;tt&amp;gt;xyz00_davical&amp;lt;/tt&amp;gt;  || Die Datenbank, die alle Daten für den DAViCal-Server enthält&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Umgebungsvariablen und &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Dabei wird &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; als Datenbank-Besitzer angegeben. Als Zeichensatz &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; (Default) auswählen.&lt;br /&gt;
&lt;br /&gt;
Sowohl für die weitere Installation, als auch für den Betrieb des Servers ist es am besten die Passwörter in die &amp;lt;tt&amp;gt;[http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html .pgpass]&amp;lt;/tt&amp;gt;-Datei zu schreiben, dann müssen sie nicht innerhalb der PHP-Dateien angebenen werden, bzw. während der Installation manuell eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_dba:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_app:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ chmod 0600 ~/.pgpass&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus werden noch Umgebungsvariablen gesetzt, so daß beim Aufruf von &amp;lt;tt&amp;gt;psql&amp;lt;/tt&amp;gt; über die Kommandozeile Datenbankname/Nutzer nicht eingegeben werden müssen. Diese Angaben sind nach Beenden der Shell-Sitzung automatisch zurückgesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ PGHOST=localhost &lt;br /&gt;
$ PGUSER=xyz00_davical_dba&lt;br /&gt;
$ PGDATABASE=xyz00_davical &lt;br /&gt;
$ export PGHOST PGUSER PGDATABASE &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PL/pgSQL installieren ====&lt;br /&gt;
&lt;br /&gt;
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese kann folgendermaßen angelegt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;CREATE LANGUAGE plpgsql;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Tabellen anlegen und initialisieren ===&lt;br /&gt;
&lt;br /&gt;
DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter &amp;lt;tt&amp;gt;davical/dba/create-database.sh&amp;lt;/tt&amp;gt;. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen der Datenbank, der -Nuter und kreieren von PL/pgSQL wurde bereits oben beschrieben. Darüberhinaus sind noch folgende Befehle auszuführen. Diese können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die &amp;lt;tt&amp;gt;PG*&amp;lt;/tt&amp;gt; Umgebungsvariablen gesetzt wurden und die &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt;-Datei gefüllt wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -f awl/dba/awl-tables.sql&lt;br /&gt;
$ psql -A -f awl/dba/schema-management.sql&lt;br /&gt;
$ psql -A -f davical/dba/davical.sql&lt;br /&gt;
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app&lt;br /&gt;
The database is version 8.4 currently at revision 1.2.9. &lt;br /&gt;
No patches were applied. &lt;br /&gt;
Supported locales updated. &lt;br /&gt;
Updated view: dav_principal.sql applied. &lt;br /&gt;
CalDAV functions updated. &lt;br /&gt;
RRULE functions updated. &lt;br /&gt;
Database permissions updated. &lt;br /&gt;
$ psql -A -f davical/dba/base-data.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den DAViCal-Admin muß noch ein Passwort gesetzt werden &amp;amp;ndash; &#039;&amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;&#039; vor dem Passwort ist hier wichtig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;UPDATE usr SET password = &#039;**geheim&#039; WHERE user_no = 1;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
DAViCal kann über eine &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat &amp;gt; davical/config/config.php&lt;br /&gt;
   $c-&amp;gt;pg_connect[] = &amp;quot;dbname=xyz00_davical user=xyz00_davical_app host=localhost&amp;quot;; &lt;br /&gt;
   $c-&amp;gt;use_persistent = true; &lt;br /&gt;
   $c-&amp;gt;sysabbr     = &#039;cal@example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;admin_email = &#039;admin@cal.example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;system_name = &#039;CalDAV Server example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;default_locale = &#039;de_DE&#039;; &lt;br /&gt;
   $c-&amp;gt;template_usr = array( &#039;active&#039; =&amp;gt; true, &lt;br /&gt;
                             &#039;locale&#039; =&amp;gt; &#039;de_DE&#039;, &lt;br /&gt;
                             &#039;date_format_type&#039; =&amp;gt; &#039;E&#039;, &lt;br /&gt;
                             &#039;email_ok&#039; =&amp;gt; date(&#039;Y-m-d&#039;) &lt;br /&gt;
                           ); &lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fast-CGI Patch ===&lt;br /&gt;
&lt;br /&gt;
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.&lt;br /&gt;
&lt;br /&gt;
In der Shared-Hosting-Umgebung von Hostsharing kann dies auch über ein Redirect in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt;-Datei gemacht gelöst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/htdocs-ssl&lt;br /&gt;
$ cat &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Regel muß die letzte in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; sein. Die Datei muß für alle lesbar sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 0644 .htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus muß noch die Datei &amp;lt;tt&amp;gt;davical/inc/HTTPAuthSession.php&amp;lt;/tt&amp;gt; angepasst werden. Hier ist die Variable &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt; ersetzt werden durch &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;REDIRECT_HTTP_AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt;. Außerdem gibt es noch einen Bug: Es wird an einer Stelle &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; statt &amp;lt;tt&amp;gt;explode&amp;lt;/tt&amp;gt; benutzt. &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; ist seit PHP 5.3.0 &#039;&#039;deprecated&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 @@ -87,8 +87,8 @@&lt;br /&gt;
      /**&lt;br /&gt;
      * Get HTTP Auth to work with PHP+FastCGI&lt;br /&gt;
      */&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;split&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;explode&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
        if ($type == &#039;Basic&#039;) {&lt;br /&gt;
          list ($user, $pass) = explode (&amp;quot;:&amp;quot;, base64_decode($cred));&lt;br /&gt;
          $_SERVER[&#039;PHP_AUTH_USER&#039;] = $user;                                                                                                    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]&lt;br /&gt;
=== Webspace aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org&lt;br /&gt;
$ rm htdocs-ssl&lt;br /&gt;
$ ln -s var/davical/htdocs htdocs-ssl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die URL des User-Interfaces lautet: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, erscheint der Login-Screen.&lt;br /&gt;
&lt;br /&gt;
== Nutzung ==&lt;br /&gt;
&lt;br /&gt;
=== User anlegen und konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen Nutzer anzulegen: &#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;User Functions&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Create Principal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Feld                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Principal ID || &#039;&#039;New Principal&#039;&#039;  || Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt&lt;br /&gt;
|-&lt;br /&gt;
| Username || hans || Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL&lt;br /&gt;
|-&lt;br /&gt;
| Change Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Confirm Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Fullname || Hans Meier || Der Name des Nutzers&lt;br /&gt;
|-&lt;br /&gt;
| Email Address || hans@example.org || Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen&lt;br /&gt;
|-&lt;br /&gt;
| Locale || Deutsch || &lt;br /&gt;
|-&lt;br /&gt;
| Date Format Style || European || &lt;br /&gt;
|-&lt;br /&gt;
| Principal Type || Person || Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || &amp;amp;ndash; || Falls der User Adminrechte bekommen soll&lt;br /&gt;
|-&lt;br /&gt;
| Active || X || Soll der Nutzer aktiv geführt werden?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des &#039;&#039;&#039;ersten&#039;&#039;&#039; Nutzers erscheint eine Fehlermeldung: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;ERROR: SQL error &amp;quot;23505&amp;quot; - ERROR: duplicate key value violates unique constraint &amp;quot;principal_pkey&amp;quot;&amp;quot; &lt;br /&gt;
 Home calendar added. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Bug. Siehe auch [http://lists.morphoss.com/pipermail/davical-dev/2011/000117.html Thread in Dev-Mailingliste].&lt;br /&gt;
&lt;br /&gt;
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff über Client-Programme ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf den Kalender erfolgt über die URL: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/user/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* user = Name des angelegte Nutzers, also z.B. &#039;&#039;&#039;&amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* home = Name des angelegten Kalenders; dies ist standardmäßig &#039;&#039;&#039;&amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt;&#039;&#039;&#039;. Andere Kalender (&#039;&#039;collection&#039;&#039;) können im User-Interface vom Nutzer angelegt werden, oder durch einen Client, der MKCALENDAR implementiert hat, so z.B. iCal oder Mulberry&lt;br /&gt;
&lt;br /&gt;
==== Beispiel Thunderbird ====&lt;br /&gt;
&lt;br /&gt;
Ist in Thunderbird die Lightning-Erweiterung installiert, dann kann der Kalender folgendermaßen eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Datei&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Neu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Kalender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf den Folgenden Seiten ist auszuwählen:&lt;br /&gt;
* &#039;&#039;Im Netzwerk&#039;&#039;&lt;br /&gt;
* &#039;&#039;CalDAV&#039;&#039;&lt;br /&gt;
* Spezifische Angaben&lt;br /&gt;
** Name, z.B. &#039;&#039;hans@example&#039;&#039;&lt;br /&gt;
** Farbe: auswählen in welcher Farbe der Kalender angezeigt werden soll&lt;br /&gt;
** Alarm: ja&lt;br /&gt;
** Email: Email auswählen&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird es wahrscheinlich noch eine Wahrnung geben, daß das SSL-Zertifikat ungültig ist, da in der Standard Hostsharing Konfiguration das hostsharing-Zertifikat ausgeliefert wird. Dieses muß dann noch importiert und akzeptiert werden.&lt;br /&gt;
&lt;br /&gt;
Thunderbird fragt dann noch nach Nuternamen und Passwort und wenn man erlaubt diese im Programm zu speichern, dann loggt sich Thunderbird zukünfitg selbständig ein.&lt;br /&gt;
&lt;br /&gt;
===== Mehrere Kalender auf gleichem Server =====&lt;br /&gt;
&lt;br /&gt;
Hat man mehrere Kalender auf dem gleichen Server &amp;amp;ndash; also z.B. mehrere User oder für einen User mehrere &#039;&#039;collections&#039;&#039;, dann kann Thunderbird diese nicht unterscheiden. Der Passwort-Manager arbeitet auf Grundlage der Domain. Siehe auch [https://bugzilla.mozilla.org/show_bug.cgi?id=247486 Bugzilla].&lt;br /&gt;
&lt;br /&gt;
Diesen Bug kann man relativ einfach umgehen, indem man weitere Subdomains anlegt, die auf die gleiche Installation verweisen, also z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/example.org/subs-ssl&lt;br /&gt;
$ mkdir cal1&lt;br /&gt;
$ mkdir cal2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und jeweils eine &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; in die neuen Verzeichnis mit folgendem Inhalt schreibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule ^.htaccess$ - [F]&lt;br /&gt;
RewriteRule ^(.*)$ https://cal.example.org/$1 [P]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht vergessen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
chmod 0644 cal1/.htaccess&lt;br /&gt;
chmod 0644 cal2/.htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hat man z.B. für User &amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt; die Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;work&amp;lt;/tt&amp;gt; und für User &amp;lt;tt&amp;gt;maria&amp;lt;/tt&amp;gt; den Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und möchte diese aus derselben Thunderbird-Instanz benutzen, können folgende URL&#039;s in Thundebrird konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/hans/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal1.example.org/caldav.php/hans/work&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal2.example.org/caldav.php/maria/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting für kürzere URL&#039;s ==&lt;br /&gt;
&lt;br /&gt;
TODO: .htaccess Beispiel&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* WIKI von DAViCal: http://wiki.davical.org&lt;br /&gt;
** [http://wiki.davical.org/w/CalDAV_Clients CalDAV Clients]&lt;br /&gt;
&lt;br /&gt;
* Alternativen&lt;br /&gt;
** [[RadicaleCalDAVServer]]&lt;br /&gt;
** [[ChandlerServer]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3596</id>
		<title>DAViCal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3596"/>
		<updated>2013-06-19T13:45:09Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Subdomain aufschalten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen Client-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry, iCal, oder iPhone.&lt;br /&gt;
&lt;br /&gt;
Das CalDAV-Protokoll bietet viele Funktionen, die noch nicht von allen Clients unterstützt werden, darunter Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc.&lt;br /&gt;
&lt;br /&gt;
DAViCal ist in PHP geschrieben, lizensiert unter GPL.&lt;br /&gt;
&lt;br /&gt;
DAViCal erlaubt auch über das WebDAV-Protokoll Kalender zu lesen, aber nicht zu modifizieren.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
DAViCal erfordert folgende technische Ressourcen:&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Webserver mit PHP5&lt;br /&gt;
* Perl für den Installationsvorgang&lt;br /&gt;
* Ein Dateisystem mit erweiterten Attributen.&lt;br /&gt;
&lt;br /&gt;
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared-Hosting-Umgebung bei Hostsharing installiert und betreibt.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür [[Domainverwaltung#Lokale_Subdomains_durch_Aufschalten.3B_Delegieren|aufgeschalteten Subdomain]] über SSL betrieben wird. Für andere Konfigurationen, wie z.B. die Installation von DAViCal in einer als Unterverzeichnis von &amp;lt;tt&amp;gt;~/doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; erstellten Subdomain, muß dieses Verfahren leicht angepaßt werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von anderen Domaininhalten, PHP-Konfigurationen, oder sogar von anderen Domain-Administratoren, isoliert werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Subdomain aufschalten ===&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden folgende Domainkonfigurationsdaten als Beispiel verwendet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Subdomain || &amp;lt;tt&amp;gt;cal.example.org&amp;lt;/tt&amp;gt;  || Die Subdomain, unter der ein DAViCal-Server laufen soll&lt;br /&gt;
|-&lt;br /&gt;
| Domain-Admin || &amp;lt;tt&amp;gt;xyz00-hans&amp;lt;/tt&amp;gt; || Der User, dem die Subdomain delegiert wurde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quellen ===&lt;br /&gt;
&lt;br /&gt;
Für DAViCal werden neben dem eigentlichen Sourcecode des Projekts noch die PHP-Library [http://andrew.mcmillan.net.nz/projects/awl &#039;&#039;Andrew&#039;s Web Libraries&#039;&#039;] benötigt. Beides findet sich auf derselben Webseite.&lt;br /&gt;
&lt;br /&gt;
Die jeweils neuste Versionen befinden sich unter&lt;br /&gt;
* DAViCal: http://debian.mcmillan.net.nz/packages/davical/&lt;br /&gt;
* AWL: http://debian.mcmillan.net.nz/packages/awl/&lt;br /&gt;
&lt;br /&gt;
Hier jeweils die Source-Dateien *.tar.gz benutzen&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/var&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.46.tar.gz&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-0.9.9.4.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auspacken ====&lt;br /&gt;
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen wird die Dateierzeungsmaske temporär auf 022 gesetzt.&lt;br /&gt;
&lt;br /&gt;
Symbolische Links erzeugen generische Verzeichnise &amp;lt;tt&amp;gt;davical&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;awl&amp;lt;/tt&amp;gt;, die auf die jeweils installierte Version zeigen. Dies erleichtert spätere Versionswechsel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 022&lt;br /&gt;
$ tar xfvz awl-0.46.tar.gz&lt;br /&gt;
$ tar xfvz davical-0.9.9.4.tar.gz&lt;br /&gt;
$ ln -s awl-0.46 awl&lt;br /&gt;
$ ln -s davical-0.9.9.4 davical&lt;br /&gt;
$ umask 077&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL vorbereiten ===&lt;br /&gt;
&lt;br /&gt;
Es wird eine eigene PostgreSQL-Datenbank benötigt, sowie 2 Datenbanknutzer.&lt;br /&gt;
&lt;br /&gt;
==== Datenbank und -Nutzer anlegen ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| DB-Admin || &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, dem die Datenbank gehört und administrative Tätigkeiten durchführt&lt;br /&gt;
|-&lt;br /&gt;
| DB-Nutzer || &amp;lt;tt&amp;gt;xyz00_davical_app&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, der über DAViCal auf die Datenbank lesen/schreibend zugreift&lt;br /&gt;
|-&lt;br /&gt;
| Datenbank || &amp;lt;tt&amp;gt;xyz00_davical&amp;lt;/tt&amp;gt;  || Die Datenbank, die alle Daten für den DAViCal-Server enthält&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Umgebungsvariablen und &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Dabei wird &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; als Datenbank-Besitzer angegeben. Als Zeichensatz &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; (Default) auswählen.&lt;br /&gt;
&lt;br /&gt;
Sowohl für die weitere Installation, als auch für den Betrieb des Servers ist es am besten die Passwörter in die &amp;lt;tt&amp;gt;[http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html .pgpass]&amp;lt;/tt&amp;gt;-Datei zu schreiben, dann müssen sie nicht innerhalb der PHP-Dateien angebenen werden, bzw. während der Installation manuell eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_dba:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_app:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ chmod 0600 ~/.pgpass&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus werden noch Umgebungsvariablen gesetzt, so daß beim Aufruf von &amp;lt;tt&amp;gt;psql&amp;lt;/tt&amp;gt; über die Kommandozeile Datenbankname/Nutzer nicht eingegeben werden müssen. Diese Angaben sind nach Beenden der Shell-Sitzung automatisch zurückgesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ PGHOST=localhost &lt;br /&gt;
$ PGUSER=xyz00_davical_dba&lt;br /&gt;
$ PGDATABASE=xyz00_davical &lt;br /&gt;
$ export PGHOST PGUSER PGDATABASE &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PL/pgSQL installieren ====&lt;br /&gt;
&lt;br /&gt;
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese kann folgendermaßen angelegt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;CREATE LANGUAGE plpgsql;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Tabellen anlegen und initialisieren ===&lt;br /&gt;
&lt;br /&gt;
DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter &amp;lt;tt&amp;gt;davical/dba/create-database.sh&amp;lt;/tt&amp;gt;. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen der Datenbank, der -Nuter und kreieren von PL/pgSQL wurde bereits oben beschrieben. Darüberhinaus sind noch folgende Befehle auszuführen. Diese können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die &amp;lt;tt&amp;gt;PG*&amp;lt;/tt&amp;gt; Umgebungsvariablen gesetzt wurden und die &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt;-Datei gefüllt wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -f awl/dba/awl-tables.sql&lt;br /&gt;
$ psql -A -f awl/dba/schema-management.sql&lt;br /&gt;
$ psql -A -f davical/dba/davical.sql&lt;br /&gt;
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app&lt;br /&gt;
The database is version 8.4 currently at revision 1.2.9. &lt;br /&gt;
No patches were applied. &lt;br /&gt;
Supported locales updated. &lt;br /&gt;
Updated view: dav_principal.sql applied. &lt;br /&gt;
CalDAV functions updated. &lt;br /&gt;
RRULE functions updated. &lt;br /&gt;
Database permissions updated. &lt;br /&gt;
$ psql -A -f davical/dba/base-data.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den DAViCal-Admin muß noch ein Passwort gesetzt werden &amp;amp;ndash; &#039;&amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;&#039; vor dem Passwort ist hier wichtig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;UPDATE usr SET password = &#039;**geheim&#039; WHERE user_no = 1;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
DAViCal kann über eine &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat &amp;gt; davical/config/config.php&lt;br /&gt;
   $c-&amp;gt;pg_connect[] = &amp;quot;dbname=xyz00_davical user=xyz00_davical_app host=localhost&amp;quot;; &lt;br /&gt;
   $c-&amp;gt;use_persistent = true; &lt;br /&gt;
   $c-&amp;gt;sysabbr     = &#039;cal@example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;admin_email = &#039;admin@cal.example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;system_name = &#039;CalDAV Server example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;default_locale = &#039;de_DE&#039;; &lt;br /&gt;
   $c-&amp;gt;template_usr = array( &#039;active&#039; =&amp;gt; true, &lt;br /&gt;
                             &#039;locale&#039; =&amp;gt; &#039;de_DE&#039;, &lt;br /&gt;
                             &#039;date_format_type&#039; =&amp;gt; &#039;E&#039;, &lt;br /&gt;
                             &#039;email_ok&#039; =&amp;gt; date(&#039;Y-m-d&#039;) &lt;br /&gt;
                           ); &lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fast-CGI Patch ===&lt;br /&gt;
&lt;br /&gt;
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.&lt;br /&gt;
&lt;br /&gt;
In der Shared-Hosting-Umgebung von Hostsharing kann dies auch über ein Redirect in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt;-Datei gemacht gelöst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/htdocs-ssl&lt;br /&gt;
$ cat &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Regel muß die letzte in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; sein. Die Datei muß für alle lesbar sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 0644 .htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus muß noch die Datei &amp;lt;tt&amp;gt;davical/inc/HTTPAuthSession.php&amp;lt;/tt&amp;gt; angepasst werden. Hier ist die Variable &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt; ersetzt werden durch &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;REDIRECT_HTTP_AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt;. Außerdem gibt es noch einen Bug: Es wird an einer Stelle &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; statt &amp;lt;tt&amp;gt;explode&amp;lt;/tt&amp;gt; benutzt. &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; ist seit PHP 5.3.0 &#039;&#039;deprecated&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 @@ -87,8 +87,8 @@&lt;br /&gt;
      /**&lt;br /&gt;
      * Get HTTP Auth to work with PHP+FastCGI&lt;br /&gt;
      */&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;split&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;explode&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
        if ($type == &#039;Basic&#039;) {&lt;br /&gt;
          list ($user, $pass) = explode (&amp;quot;:&amp;quot;, base64_decode($cred));&lt;br /&gt;
          $_SERVER[&#039;PHP_AUTH_USER&#039;] = $user;                                                                                                    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]&lt;br /&gt;
=== Webspace aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org&lt;br /&gt;
$ rm htdocs-ssl&lt;br /&gt;
$ ln -s var/davical/htdocs htdocs-ssl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die URL des User-Interfaces lautet: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, erscheint der Login-Screen.&lt;br /&gt;
&lt;br /&gt;
== Nutzung ==&lt;br /&gt;
&lt;br /&gt;
=== User anlegen und konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen Nutzer anzulegen: &#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;User Functions&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Create Principal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Feld                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Principal ID || &#039;&#039;New Principal&#039;&#039;  || Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt&lt;br /&gt;
|-&lt;br /&gt;
| Username || hans || Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL&lt;br /&gt;
|-&lt;br /&gt;
| Change Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Confirm Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Fullname || Hans Meier || Der Name des Nutzers&lt;br /&gt;
|-&lt;br /&gt;
| Email Address || hans@example.org || Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen&lt;br /&gt;
|-&lt;br /&gt;
| Locale || Deutsch || &lt;br /&gt;
|-&lt;br /&gt;
| Date Format Style || European || &lt;br /&gt;
|-&lt;br /&gt;
| Principal Type || Person || Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || &amp;amp;ndash; || Falls der User Adminrechte bekommen soll&lt;br /&gt;
|-&lt;br /&gt;
| Active || X || Soll der Nutzer aktiv geführt werden?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des &#039;&#039;&#039;ersten&#039;&#039;&#039; Nutzers erscheint eine Fehlermeldung: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;ERROR: SQL error &amp;quot;23505&amp;quot; - ERROR: duplicate key value violates unique constraint &amp;quot;principal_pkey&amp;quot;&amp;quot; &lt;br /&gt;
 Home calendar added. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Bug. Siehe auch [http://lists.morphoss.com/pipermail/davical-dev/2011/000117.html Thread in Dev-Mailingliste].&lt;br /&gt;
&lt;br /&gt;
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff über Client-Programme ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf den Kalender erfolgt über die URL: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/user/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* user = Name des angelegte Nutzers, also z.B. &#039;&#039;&#039;&amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* home = Name des angelegten Kalenders; dies ist standardmäßig &#039;&#039;&#039;&amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt;&#039;&#039;&#039;. Andere Kalender (&#039;&#039;collection&#039;&#039;) können im User-Interface vom Nutzer angelegt werden, oder durch einen Client, der MKCALENDAR implementiert hat, so z.B. iCal oder Mulberry&lt;br /&gt;
&lt;br /&gt;
==== Beispiel Thunderbird ====&lt;br /&gt;
&lt;br /&gt;
Ist in Thunderbird die Lightning-Erweiterung installiert, dann kann der Kalender folgendermaßen eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Datei&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Neu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Kalender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf den Folgenden Seiten ist auszuwählen:&lt;br /&gt;
* &#039;&#039;Im Netzwerk&#039;&#039;&lt;br /&gt;
* &#039;&#039;CalDAV&#039;&#039;&lt;br /&gt;
* Spezifische Angaben&lt;br /&gt;
** Name, z.B. &#039;&#039;hans@example&#039;&#039;&lt;br /&gt;
** Farbe: auswählen in welcher Farbe der Kalender angezeigt werden soll&lt;br /&gt;
** Alarm: ja&lt;br /&gt;
** Email: Email auswählen&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird es wahrscheinlich noch eine Wahrnung geben, daß das SSL-Zertifikat ungültig ist, da in der Standard Hostsharing Konfiguration das hostsharing-Zertifikat ausgeliefert wird. Dieses muß dann noch importiert und akzeptiert werden.&lt;br /&gt;
&lt;br /&gt;
Thunderbird fragt dann noch nach Nuternamen und Passwort und wenn man erlaubt diese im Programm zu speichern, dann loggt sich Thunderbird zukünfitg selbständig ein.&lt;br /&gt;
&lt;br /&gt;
===== Mehrere Kalender auf gleichem Server =====&lt;br /&gt;
&lt;br /&gt;
Hat man mehrere Kalender auf dem gleichen Server &amp;amp;ndash; also z.B. mehrere User oder für einen User mehrere &#039;&#039;collections&#039;&#039;, dann kann Thunderbird diese nicht unterscheiden. Der Passwort-Manager arbeitet auf Grundlage der Domain. Siehe auch [https://bugzilla.mozilla.org/show_bug.cgi?id=247486 Bugzilla].&lt;br /&gt;
&lt;br /&gt;
Diesen Bug kann man relativ einfach umgehen, indem man weitere Subdomains anlegt, die auf die gleiche Installation verweisen, also z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/example.org/subs-ssl&lt;br /&gt;
$ mkdir cal1&lt;br /&gt;
$ mkdir cal2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und jeweils eine &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; in die neuen Verzeichnis mit folgendem Inhalt schreibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule ^.htaccess$ - [F]&lt;br /&gt;
RewriteRule ^(.*)$ https://cal.example.org/$1 [P]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht vergessen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
chmod 0644 cal1/.htaccess&lt;br /&gt;
chmod 0644 cal2/.htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hat man z.B. für User &amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt; die Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;work&amp;lt;/tt&amp;gt; und für User &amp;lt;tt&amp;gt;maria&amp;lt;/tt&amp;gt; den Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und möchte diese aus derselben Thunderbird-Instanz benutzen, können folgende URL&#039;s in Thundebrird konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/hans/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal1.example.org/caldav.php/hans/work&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal2.example.org/caldav.php/maria/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting für kürzere URL&#039;s ==&lt;br /&gt;
&lt;br /&gt;
TODO: .htaccess Beispiel&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* WIKI von DAViCal: http://wiki.davical.org&lt;br /&gt;
** [http://wiki.davical.org/w/CalDAV_Clients CalDAV Clients]&lt;br /&gt;
&lt;br /&gt;
* Alternativen&lt;br /&gt;
** [[RadicaleCalDAVServer]]&lt;br /&gt;
** [[ChandlerServer]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3595</id>
		<title>DAViCal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3595"/>
		<updated>2013-06-19T13:42:26Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen Client-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry, iCal, oder iPhone.&lt;br /&gt;
&lt;br /&gt;
Das CalDAV-Protokoll bietet viele Funktionen, die noch nicht von allen Clients unterstützt werden, darunter Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc.&lt;br /&gt;
&lt;br /&gt;
DAViCal ist in PHP geschrieben, lizensiert unter GPL.&lt;br /&gt;
&lt;br /&gt;
DAViCal erlaubt auch über das WebDAV-Protokoll Kalender zu lesen, aber nicht zu modifizieren.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
DAViCal erfordert folgende technische Ressourcen:&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Webserver mit PHP5&lt;br /&gt;
* Perl für den Installationsvorgang&lt;br /&gt;
* Ein Dateisystem mit erweiterten Attributen.&lt;br /&gt;
&lt;br /&gt;
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared-Hosting-Umgebung bei Hostsharing installiert und betreibt.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür [[Domainverwaltung#Lokale_Subdomains_durch_Aufschalten.3B_Delegieren|aufgeschalteten Subdomain]] über SSL betrieben wird. Für andere Konfigurationen, wie z.B. die Installation von DAViCal in einer als Unterverzeichnis von &amp;lt;tt&amp;gt;~/doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; erstellten Subdomain, muß dieses Verfahren leicht angepaßt werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von anderen Domaininhalten, PHP-Konfigurationen, oder sogar von anderen Domain-Administratoren, isoliert werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Subdomain aufschalten ===&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung werden folgende Daten als Konvention angenommen&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| (Sub)-Domain || &amp;lt;tt&amp;gt;cal.example.org&amp;lt;/tt&amp;gt;  || Die Sub-Domain unter der der DAViCal-Server betrieben wird&lt;br /&gt;
|-&lt;br /&gt;
| Domain-Admin || &amp;lt;tt&amp;gt;xyz00-hans&amp;lt;/tt&amp;gt; || Der User, dem die Sub-Domain delegiert wurde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quellen ===&lt;br /&gt;
&lt;br /&gt;
Für DAViCal werden neben dem eigentlichen Sourcecode des Projekts noch die PHP-Library [http://andrew.mcmillan.net.nz/projects/awl &#039;&#039;Andrew&#039;s Web Libraries&#039;&#039;] benötigt. Beides findet sich auf derselben Webseite.&lt;br /&gt;
&lt;br /&gt;
Die jeweils neuste Versionen befinden sich unter&lt;br /&gt;
* DAViCal: http://debian.mcmillan.net.nz/packages/davical/&lt;br /&gt;
* AWL: http://debian.mcmillan.net.nz/packages/awl/&lt;br /&gt;
&lt;br /&gt;
Hier jeweils die Source-Dateien *.tar.gz benutzen&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/var&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.46.tar.gz&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-0.9.9.4.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auspacken ====&lt;br /&gt;
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen wird die Dateierzeungsmaske temporär auf 022 gesetzt.&lt;br /&gt;
&lt;br /&gt;
Symbolische Links erzeugen generische Verzeichnise &amp;lt;tt&amp;gt;davical&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;awl&amp;lt;/tt&amp;gt;, die auf die jeweils installierte Version zeigen. Dies erleichtert spätere Versionswechsel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 022&lt;br /&gt;
$ tar xfvz awl-0.46.tar.gz&lt;br /&gt;
$ tar xfvz davical-0.9.9.4.tar.gz&lt;br /&gt;
$ ln -s awl-0.46 awl&lt;br /&gt;
$ ln -s davical-0.9.9.4 davical&lt;br /&gt;
$ umask 077&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL vorbereiten ===&lt;br /&gt;
&lt;br /&gt;
Es wird eine eigene PostgreSQL-Datenbank benötigt, sowie 2 Datenbanknutzer.&lt;br /&gt;
&lt;br /&gt;
==== Datenbank und -Nutzer anlegen ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| DB-Admin || &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, dem die Datenbank gehört und administrative Tätigkeiten durchführt&lt;br /&gt;
|-&lt;br /&gt;
| DB-Nutzer || &amp;lt;tt&amp;gt;xyz00_davical_app&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, der über DAViCal auf die Datenbank lesen/schreibend zugreift&lt;br /&gt;
|-&lt;br /&gt;
| Datenbank || &amp;lt;tt&amp;gt;xyz00_davical&amp;lt;/tt&amp;gt;  || Die Datenbank, die alle Daten für den DAViCal-Server enthält&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Umgebungsvariablen und &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Dabei wird &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; als Datenbank-Besitzer angegeben. Als Zeichensatz &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; (Default) auswählen.&lt;br /&gt;
&lt;br /&gt;
Sowohl für die weitere Installation, als auch für den Betrieb des Servers ist es am besten die Passwörter in die &amp;lt;tt&amp;gt;[http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html .pgpass]&amp;lt;/tt&amp;gt;-Datei zu schreiben, dann müssen sie nicht innerhalb der PHP-Dateien angebenen werden, bzw. während der Installation manuell eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_dba:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_app:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ chmod 0600 ~/.pgpass&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus werden noch Umgebungsvariablen gesetzt, so daß beim Aufruf von &amp;lt;tt&amp;gt;psql&amp;lt;/tt&amp;gt; über die Kommandozeile Datenbankname/Nutzer nicht eingegeben werden müssen. Diese Angaben sind nach Beenden der Shell-Sitzung automatisch zurückgesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ PGHOST=localhost &lt;br /&gt;
$ PGUSER=xyz00_davical_dba&lt;br /&gt;
$ PGDATABASE=xyz00_davical &lt;br /&gt;
$ export PGHOST PGUSER PGDATABASE &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PL/pgSQL installieren ====&lt;br /&gt;
&lt;br /&gt;
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese kann folgendermaßen angelegt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;CREATE LANGUAGE plpgsql;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Tabellen anlegen und initialisieren ===&lt;br /&gt;
&lt;br /&gt;
DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter &amp;lt;tt&amp;gt;davical/dba/create-database.sh&amp;lt;/tt&amp;gt;. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen der Datenbank, der -Nuter und kreieren von PL/pgSQL wurde bereits oben beschrieben. Darüberhinaus sind noch folgende Befehle auszuführen. Diese können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die &amp;lt;tt&amp;gt;PG*&amp;lt;/tt&amp;gt; Umgebungsvariablen gesetzt wurden und die &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt;-Datei gefüllt wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -f awl/dba/awl-tables.sql&lt;br /&gt;
$ psql -A -f awl/dba/schema-management.sql&lt;br /&gt;
$ psql -A -f davical/dba/davical.sql&lt;br /&gt;
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app&lt;br /&gt;
The database is version 8.4 currently at revision 1.2.9. &lt;br /&gt;
No patches were applied. &lt;br /&gt;
Supported locales updated. &lt;br /&gt;
Updated view: dav_principal.sql applied. &lt;br /&gt;
CalDAV functions updated. &lt;br /&gt;
RRULE functions updated. &lt;br /&gt;
Database permissions updated. &lt;br /&gt;
$ psql -A -f davical/dba/base-data.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den DAViCal-Admin muß noch ein Passwort gesetzt werden &amp;amp;ndash; &#039;&amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;&#039; vor dem Passwort ist hier wichtig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;UPDATE usr SET password = &#039;**geheim&#039; WHERE user_no = 1;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
DAViCal kann über eine &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat &amp;gt; davical/config/config.php&lt;br /&gt;
   $c-&amp;gt;pg_connect[] = &amp;quot;dbname=xyz00_davical user=xyz00_davical_app host=localhost&amp;quot;; &lt;br /&gt;
   $c-&amp;gt;use_persistent = true; &lt;br /&gt;
   $c-&amp;gt;sysabbr     = &#039;cal@example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;admin_email = &#039;admin@cal.example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;system_name = &#039;CalDAV Server example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;default_locale = &#039;de_DE&#039;; &lt;br /&gt;
   $c-&amp;gt;template_usr = array( &#039;active&#039; =&amp;gt; true, &lt;br /&gt;
                             &#039;locale&#039; =&amp;gt; &#039;de_DE&#039;, &lt;br /&gt;
                             &#039;date_format_type&#039; =&amp;gt; &#039;E&#039;, &lt;br /&gt;
                             &#039;email_ok&#039; =&amp;gt; date(&#039;Y-m-d&#039;) &lt;br /&gt;
                           ); &lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fast-CGI Patch ===&lt;br /&gt;
&lt;br /&gt;
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.&lt;br /&gt;
&lt;br /&gt;
In der Shared-Hosting-Umgebung von Hostsharing kann dies auch über ein Redirect in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt;-Datei gemacht gelöst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/htdocs-ssl&lt;br /&gt;
$ cat &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Regel muß die letzte in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; sein. Die Datei muß für alle lesbar sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 0644 .htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus muß noch die Datei &amp;lt;tt&amp;gt;davical/inc/HTTPAuthSession.php&amp;lt;/tt&amp;gt; angepasst werden. Hier ist die Variable &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt; ersetzt werden durch &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;REDIRECT_HTTP_AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt;. Außerdem gibt es noch einen Bug: Es wird an einer Stelle &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; statt &amp;lt;tt&amp;gt;explode&amp;lt;/tt&amp;gt; benutzt. &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; ist seit PHP 5.3.0 &#039;&#039;deprecated&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 @@ -87,8 +87,8 @@&lt;br /&gt;
      /**&lt;br /&gt;
      * Get HTTP Auth to work with PHP+FastCGI&lt;br /&gt;
      */&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;split&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;explode&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
        if ($type == &#039;Basic&#039;) {&lt;br /&gt;
          list ($user, $pass) = explode (&amp;quot;:&amp;quot;, base64_decode($cred));&lt;br /&gt;
          $_SERVER[&#039;PHP_AUTH_USER&#039;] = $user;                                                                                                    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]&lt;br /&gt;
=== Webspace aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org&lt;br /&gt;
$ rm htdocs-ssl&lt;br /&gt;
$ ln -s var/davical/htdocs htdocs-ssl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die URL des User-Interfaces lautet: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, erscheint der Login-Screen.&lt;br /&gt;
&lt;br /&gt;
== Nutzung ==&lt;br /&gt;
&lt;br /&gt;
=== User anlegen und konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen Nutzer anzulegen: &#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;User Functions&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Create Principal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Feld                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Principal ID || &#039;&#039;New Principal&#039;&#039;  || Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt&lt;br /&gt;
|-&lt;br /&gt;
| Username || hans || Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL&lt;br /&gt;
|-&lt;br /&gt;
| Change Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Confirm Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Fullname || Hans Meier || Der Name des Nutzers&lt;br /&gt;
|-&lt;br /&gt;
| Email Address || hans@example.org || Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen&lt;br /&gt;
|-&lt;br /&gt;
| Locale || Deutsch || &lt;br /&gt;
|-&lt;br /&gt;
| Date Format Style || European || &lt;br /&gt;
|-&lt;br /&gt;
| Principal Type || Person || Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || &amp;amp;ndash; || Falls der User Adminrechte bekommen soll&lt;br /&gt;
|-&lt;br /&gt;
| Active || X || Soll der Nutzer aktiv geführt werden?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des &#039;&#039;&#039;ersten&#039;&#039;&#039; Nutzers erscheint eine Fehlermeldung: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;ERROR: SQL error &amp;quot;23505&amp;quot; - ERROR: duplicate key value violates unique constraint &amp;quot;principal_pkey&amp;quot;&amp;quot; &lt;br /&gt;
 Home calendar added. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Bug. Siehe auch [http://lists.morphoss.com/pipermail/davical-dev/2011/000117.html Thread in Dev-Mailingliste].&lt;br /&gt;
&lt;br /&gt;
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff über Client-Programme ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf den Kalender erfolgt über die URL: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/user/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* user = Name des angelegte Nutzers, also z.B. &#039;&#039;&#039;&amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* home = Name des angelegten Kalenders; dies ist standardmäßig &#039;&#039;&#039;&amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt;&#039;&#039;&#039;. Andere Kalender (&#039;&#039;collection&#039;&#039;) können im User-Interface vom Nutzer angelegt werden, oder durch einen Client, der MKCALENDAR implementiert hat, so z.B. iCal oder Mulberry&lt;br /&gt;
&lt;br /&gt;
==== Beispiel Thunderbird ====&lt;br /&gt;
&lt;br /&gt;
Ist in Thunderbird die Lightning-Erweiterung installiert, dann kann der Kalender folgendermaßen eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Datei&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Neu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Kalender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf den Folgenden Seiten ist auszuwählen:&lt;br /&gt;
* &#039;&#039;Im Netzwerk&#039;&#039;&lt;br /&gt;
* &#039;&#039;CalDAV&#039;&#039;&lt;br /&gt;
* Spezifische Angaben&lt;br /&gt;
** Name, z.B. &#039;&#039;hans@example&#039;&#039;&lt;br /&gt;
** Farbe: auswählen in welcher Farbe der Kalender angezeigt werden soll&lt;br /&gt;
** Alarm: ja&lt;br /&gt;
** Email: Email auswählen&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird es wahrscheinlich noch eine Wahrnung geben, daß das SSL-Zertifikat ungültig ist, da in der Standard Hostsharing Konfiguration das hostsharing-Zertifikat ausgeliefert wird. Dieses muß dann noch importiert und akzeptiert werden.&lt;br /&gt;
&lt;br /&gt;
Thunderbird fragt dann noch nach Nuternamen und Passwort und wenn man erlaubt diese im Programm zu speichern, dann loggt sich Thunderbird zukünfitg selbständig ein.&lt;br /&gt;
&lt;br /&gt;
===== Mehrere Kalender auf gleichem Server =====&lt;br /&gt;
&lt;br /&gt;
Hat man mehrere Kalender auf dem gleichen Server &amp;amp;ndash; also z.B. mehrere User oder für einen User mehrere &#039;&#039;collections&#039;&#039;, dann kann Thunderbird diese nicht unterscheiden. Der Passwort-Manager arbeitet auf Grundlage der Domain. Siehe auch [https://bugzilla.mozilla.org/show_bug.cgi?id=247486 Bugzilla].&lt;br /&gt;
&lt;br /&gt;
Diesen Bug kann man relativ einfach umgehen, indem man weitere Subdomains anlegt, die auf die gleiche Installation verweisen, also z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/example.org/subs-ssl&lt;br /&gt;
$ mkdir cal1&lt;br /&gt;
$ mkdir cal2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und jeweils eine &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; in die neuen Verzeichnis mit folgendem Inhalt schreibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule ^.htaccess$ - [F]&lt;br /&gt;
RewriteRule ^(.*)$ https://cal.example.org/$1 [P]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht vergessen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
chmod 0644 cal1/.htaccess&lt;br /&gt;
chmod 0644 cal2/.htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hat man z.B. für User &amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt; die Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;work&amp;lt;/tt&amp;gt; und für User &amp;lt;tt&amp;gt;maria&amp;lt;/tt&amp;gt; den Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und möchte diese aus derselben Thunderbird-Instanz benutzen, können folgende URL&#039;s in Thundebrird konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/hans/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal1.example.org/caldav.php/hans/work&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal2.example.org/caldav.php/maria/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting für kürzere URL&#039;s ==&lt;br /&gt;
&lt;br /&gt;
TODO: .htaccess Beispiel&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* WIKI von DAViCal: http://wiki.davical.org&lt;br /&gt;
** [http://wiki.davical.org/w/CalDAV_Clients CalDAV Clients]&lt;br /&gt;
&lt;br /&gt;
* Alternativen&lt;br /&gt;
** [[RadicaleCalDAVServer]]&lt;br /&gt;
** [[ChandlerServer]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3594</id>
		<title>Domainverwaltung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3594"/>
		<updated>2013-06-18T16:41:33Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Adresse von Owner / Admin-C ändern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-DomainLinks}}&lt;br /&gt;
&lt;br /&gt;
= Lokale Subdomains =&lt;br /&gt;
&lt;br /&gt;
Subdomains sind Domains unterhalb der Hauptdomain. Also das www in www.example.com, test in test.example.com usw. Bei Hostsharing können beliebig viele verschiedene Subdomains angelegt werden.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Unterverzeichnis in &amp;lt;tt&amp;gt;doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Man kann eine Subdomain erstellen, indem man unter &amp;lt;tt&amp;gt;[[~/]]doms/&#039;&#039;example.org&#039;&#039;/subs/&amp;lt;/tt&amp;gt; ein Unterverzeichnis erstellt.&lt;br /&gt;
&lt;br /&gt;
Ein Unterverzeichnis mit dem Namen &amp;lt;tt&amp;gt;[[~/]]doms/&#039;&#039;example.org&#039;&#039;/subs/&#039;&#039;muster&#039;&#039;&amp;lt;/tt&amp;gt; ergibt beispielsweise die Subdomain &amp;lt;tt&amp;gt;muster.example.org&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Aufschalten; Delegieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Aufschalten&amp;quot; bedeutet in der Hostsharing-Doku, daß eine Subdomain so eingerichtet wird, daß sie neben der Hauptdomain eine eigene Existenz führt, sowohl als Verzeichnis unter &amp;lt;tt&amp;gt;[[~/]]doms/&amp;lt;/tt&amp;gt; als auch im DNS.&lt;br /&gt;
&lt;br /&gt;
Eine Subdomain wie muster.example.org kann dabei im gleichen Paket mit der Hauptdomain example.org oder ib einem anderen Paket aufgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zum gleichen Paket wie die übergeordnete Domain gehören soll, kann sie der Paket-Admin mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zu einem anderen Paket des gleichen HS-Mitglieds gehören soll, kann sie der Paket-Admin unter seinem Mitgliedsaccount (hsh00-xyz) mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain an ein anderes Mitglied delegiert werden soll, müssen sich beide Mitglieder mit diesem Wunsch an den Hostsharing-Service wenden. Der Hostsharing-Service richtet die Subdomain ein, wenn ihm übereinstimmende Willenserklärungen der beteiligten Mitglieder vorliegen.&lt;br /&gt;
&lt;br /&gt;
= Eine bestehende Domain einem neuen Domain-Admin oder einem anderen Paket zuordnen =&lt;br /&gt;
&lt;br /&gt;
Um eine Domain zu verschieben, also einem anderen Admin zuzuordnen, wird grundsätzlich über HSAdmin die Domain gelöscht und neu angelegt. Da die eigentliche Registrierung über das [http://www.domain-bestellsystem.de Domainbestellsystem] erfolgt, bleibt der Eigentümer der Domain unverändert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Das Verzeichnis &amp;lt;tt&amp;gt;~/doms/&#039;&#039;example.org&#039;&#039;/, also alle Dateien im Webspace, wird bei dieser Aktion komplett gelöscht! Der Bestand muß vorher manuell gesichert werden (zum Beispiel als &amp;lt;tt&amp;gt;tar&amp;lt;/tt&amp;gt;-Archiv)! Auch die Mailadressen der betreffenden Domain gehen verloren und müssen ggf. neu eingetragen werden!&lt;br /&gt;
&lt;br /&gt;
Der Hostsharing-Service (service@hostsharing.net) kann auch Verschiebungen mit minimalen Ausfallzeiten bei aufwandsabhängiger Abrechnung gemäß dem Hostmaster-Stundensatz  durchführen.&lt;br /&gt;
&lt;br /&gt;
= Status der Domaineinrichtung =&lt;br /&gt;
Der Status eines Domaineinrichtungsvorgangs kann mit dem hsadmin-[[WebFrontend]] oder mit [[hsadmin]] in der [[Shell]]  eingesehen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hsadmin -c domain.search&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Adresse von Owner / Admin-C ändern =&lt;br /&gt;
Um die Adressdaten des Domain-Inhabers zu ändern, aktualisiere den zugehörigen [[Handle]] im [https://www.domain-bestellsystem.de Domain-Bestellsystem].&lt;br /&gt;
&lt;br /&gt;
= Eigene Verwaltung der Zonefiles =&lt;br /&gt;
Siehe [[Verwalten der Zonendaten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Hsadmin]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3593</id>
		<title>Domainverwaltung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3593"/>
		<updated>2013-06-18T16:40:20Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Status der Domaineinrichtung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-DomainLinks}}&lt;br /&gt;
&lt;br /&gt;
= Lokale Subdomains =&lt;br /&gt;
&lt;br /&gt;
Subdomains sind Domains unterhalb der Hauptdomain. Also das www in www.example.com, test in test.example.com usw. Bei Hostsharing können beliebig viele verschiedene Subdomains angelegt werden.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Unterverzeichnis in &amp;lt;tt&amp;gt;doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Man kann eine Subdomain erstellen, indem man unter &amp;lt;tt&amp;gt;[[~/]]doms/&#039;&#039;example.org&#039;&#039;/subs/&amp;lt;/tt&amp;gt; ein Unterverzeichnis erstellt.&lt;br /&gt;
&lt;br /&gt;
Ein Unterverzeichnis mit dem Namen &amp;lt;tt&amp;gt;[[~/]]doms/&#039;&#039;example.org&#039;&#039;/subs/&#039;&#039;muster&#039;&#039;&amp;lt;/tt&amp;gt; ergibt beispielsweise die Subdomain &amp;lt;tt&amp;gt;muster.example.org&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Aufschalten; Delegieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Aufschalten&amp;quot; bedeutet in der Hostsharing-Doku, daß eine Subdomain so eingerichtet wird, daß sie neben der Hauptdomain eine eigene Existenz führt, sowohl als Verzeichnis unter &amp;lt;tt&amp;gt;[[~/]]doms/&amp;lt;/tt&amp;gt; als auch im DNS.&lt;br /&gt;
&lt;br /&gt;
Eine Subdomain wie muster.example.org kann dabei im gleichen Paket mit der Hauptdomain example.org oder ib einem anderen Paket aufgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zum gleichen Paket wie die übergeordnete Domain gehören soll, kann sie der Paket-Admin mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zu einem anderen Paket des gleichen HS-Mitglieds gehören soll, kann sie der Paket-Admin unter seinem Mitgliedsaccount (hsh00-xyz) mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain an ein anderes Mitglied delegiert werden soll, müssen sich beide Mitglieder mit diesem Wunsch an den Hostsharing-Service wenden. Der Hostsharing-Service richtet die Subdomain ein, wenn ihm übereinstimmende Willenserklärungen der beteiligten Mitglieder vorliegen.&lt;br /&gt;
&lt;br /&gt;
= Eine bestehende Domain einem neuen Domain-Admin oder einem anderen Paket zuordnen =&lt;br /&gt;
&lt;br /&gt;
Um eine Domain zu verschieben, also einem anderen Admin zuzuordnen, wird grundsätzlich über HSAdmin die Domain gelöscht und neu angelegt. Da die eigentliche Registrierung über das [http://www.domain-bestellsystem.de Domainbestellsystem] erfolgt, bleibt der Eigentümer der Domain unverändert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Das Verzeichnis &amp;lt;tt&amp;gt;~/doms/&#039;&#039;example.org&#039;&#039;/, also alle Dateien im Webspace, wird bei dieser Aktion komplett gelöscht! Der Bestand muß vorher manuell gesichert werden (zum Beispiel als &amp;lt;tt&amp;gt;tar&amp;lt;/tt&amp;gt;-Archiv)! Auch die Mailadressen der betreffenden Domain gehen verloren und müssen ggf. neu eingetragen werden!&lt;br /&gt;
&lt;br /&gt;
Der Hostsharing-Service (service@hostsharing.net) kann auch Verschiebungen mit minimalen Ausfallzeiten bei aufwandsabhängiger Abrechnung gemäß dem Hostmaster-Stundensatz  durchführen.&lt;br /&gt;
&lt;br /&gt;
= Status der Domaineinrichtung =&lt;br /&gt;
Der Status eines Domaineinrichtungsvorgangs kann mit dem hsadmin-[[WebFrontend]] oder mit [[hsadmin]] in der [[Shell]]  eingesehen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hsadmin -c domain.search&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Adresse von Owner / Admin-C ändern =&lt;br /&gt;
Die Änderung der Adressdaten erfolgt, indem die Adressdaten des zugehörigen [[Handles]] im [https://www.domain-bestellsystem.de Domain-Bestellsystem] aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= Eigene Verwaltung der Zonefiles =&lt;br /&gt;
Siehe [[Verwalten der Zonendaten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Hsadmin]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3592</id>
		<title>Domainverwaltung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3592"/>
		<updated>2013-06-18T16:34:44Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Domains neu zuordnen (Domain-Admin ändern, Paketzuordnung ändern) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-DomainLinks}}&lt;br /&gt;
&lt;br /&gt;
= Lokale Subdomains =&lt;br /&gt;
&lt;br /&gt;
Subdomains sind Domains unterhalb der Hauptdomain. Also das www in www.example.com, test in test.example.com usw. Bei Hostsharing können beliebig viele verschiedene Subdomains angelegt werden.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Unterverzeichnis in &amp;lt;tt&amp;gt;doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Man kann eine Subdomain erstellen, indem man unter &amp;lt;tt&amp;gt;[[~/]]doms/&#039;&#039;example.org&#039;&#039;/subs/&amp;lt;/tt&amp;gt; ein Unterverzeichnis erstellt.&lt;br /&gt;
&lt;br /&gt;
Ein Unterverzeichnis mit dem Namen &amp;lt;tt&amp;gt;[[~/]]doms/&#039;&#039;example.org&#039;&#039;/subs/&#039;&#039;muster&#039;&#039;&amp;lt;/tt&amp;gt; ergibt beispielsweise die Subdomain &amp;lt;tt&amp;gt;muster.example.org&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Aufschalten; Delegieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Aufschalten&amp;quot; bedeutet in der Hostsharing-Doku, daß eine Subdomain so eingerichtet wird, daß sie neben der Hauptdomain eine eigene Existenz führt, sowohl als Verzeichnis unter &amp;lt;tt&amp;gt;[[~/]]doms/&amp;lt;/tt&amp;gt; als auch im DNS.&lt;br /&gt;
&lt;br /&gt;
Eine Subdomain wie muster.example.org kann dabei im gleichen Paket mit der Hauptdomain example.org oder ib einem anderen Paket aufgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zum gleichen Paket wie die übergeordnete Domain gehören soll, kann sie der Paket-Admin mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zu einem anderen Paket des gleichen HS-Mitglieds gehören soll, kann sie der Paket-Admin unter seinem Mitgliedsaccount (hsh00-xyz) mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain an ein anderes Mitglied delegiert werden soll, müssen sich beide Mitglieder mit diesem Wunsch an den Hostsharing-Service wenden. Der Hostsharing-Service richtet die Subdomain ein, wenn ihm übereinstimmende Willenserklärungen der beteiligten Mitglieder vorliegen.&lt;br /&gt;
&lt;br /&gt;
= Eine bestehende Domain einem neuen Domain-Admin oder einem anderen Paket zuordnen =&lt;br /&gt;
&lt;br /&gt;
Um eine Domain zu verschieben, also einem anderen Admin zuzuordnen, wird grundsätzlich über HSAdmin die Domain gelöscht und neu angelegt. Da die eigentliche Registrierung über das [http://www.domain-bestellsystem.de Domainbestellsystem] erfolgt, bleibt der Eigentümer der Domain unverändert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Das Verzeichnis &amp;lt;tt&amp;gt;~/doms/&#039;&#039;example.org&#039;&#039;/, also alle Dateien im Webspace, wird bei dieser Aktion komplett gelöscht! Der Bestand muß vorher manuell gesichert werden (zum Beispiel als &amp;lt;tt&amp;gt;tar&amp;lt;/tt&amp;gt;-Archiv)! Auch die Mailadressen der betreffenden Domain gehen verloren und müssen ggf. neu eingetragen werden!&lt;br /&gt;
&lt;br /&gt;
Der Hostsharing-Service (service@hostsharing.net) kann auch Verschiebungen mit minimalen Ausfallzeiten bei aufwandsabhängiger Abrechnung gemäß dem Hostmaster-Stundensatz  durchführen.&lt;br /&gt;
&lt;br /&gt;
= Status der Domaineinrichtung =&lt;br /&gt;
Der Domaineinrichtungs-Status kann  mit dem hsadmin-[[WebFrontend]] eingesehen werden oder mit [[hsadmin]] auf der Kommandozeile der [[Shell]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hsadmin -c domain.search&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Adresse von Owner / Admin-C ändern =&lt;br /&gt;
Die Änderung der Adressdaten erfolgt, indem die Adressdaten des zugehörigen [[Handles]] im [https://www.domain-bestellsystem.de Domain-Bestellsystem] aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= Eigene Verwaltung der Zonefiles =&lt;br /&gt;
Siehe [[Verwalten der Zonendaten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Hsadmin]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3591</id>
		<title>Domainverwaltung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3591"/>
		<updated>2013-06-18T16:27:10Z</updated>

		<summary type="html">&lt;p&gt;Apc00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-DomainLinks}}&lt;br /&gt;
&lt;br /&gt;
= Lokale Subdomains =&lt;br /&gt;
&lt;br /&gt;
Subdomains sind Domains unterhalb der Hauptdomain. Also das www in www.example.com, test in test.example.com usw. Bei Hostsharing können beliebig viele verschiedene Subdomains angelegt werden.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Unterverzeichnis in &amp;lt;tt&amp;gt;doms/&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Man kann eine Subdomain erstellen, indem man unter &amp;lt;tt&amp;gt;[[~/]]doms/&#039;&#039;example.org&#039;&#039;/subs/&amp;lt;/tt&amp;gt; ein Unterverzeichnis erstellt.&lt;br /&gt;
&lt;br /&gt;
Ein Unterverzeichnis mit dem Namen &amp;lt;tt&amp;gt;[[~/]]doms/&#039;&#039;example.org&#039;&#039;/subs/&#039;&#039;muster&#039;&#039;&amp;lt;/tt&amp;gt; ergibt beispielsweise die Subdomain &amp;lt;tt&amp;gt;muster.example.org&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Aufschalten; Delegieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Aufschalten&amp;quot; bedeutet in der Hostsharing-Doku, daß eine Subdomain so eingerichtet wird, daß sie neben der Hauptdomain eine eigene Existenz führt, sowohl als Verzeichnis unter &amp;lt;tt&amp;gt;[[~/]]doms/&amp;lt;/tt&amp;gt; als auch im DNS.&lt;br /&gt;
&lt;br /&gt;
Eine Subdomain wie muster.example.org kann dabei im gleichen Paket mit der Hauptdomain example.org oder ib einem anderen Paket aufgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zum gleichen Paket wie die übergeordnete Domain gehören soll, kann sie der Paket-Admin mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zu einem anderen Paket des gleichen HS-Mitglieds gehören soll, kann sie der Paket-Admin unter seinem Mitgliedsaccount (hsh00-xyz) mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain an ein anderes Mitglied delegiert werden soll, müssen sich beide Mitglieder mit diesem Wunsch an den Hostsharing-Service wenden. Der Hostsharing-Service richtet die Subdomain ein, wenn ihm übereinstimmende Willenserklärungen der beteiligten Mitglieder vorliegen.&lt;br /&gt;
&lt;br /&gt;
= Domains neu zuordnen (Domain-Admin ändern, Paketzuordnung ändern) =&lt;br /&gt;
&lt;br /&gt;
Eine Domain-Verschiebung (neu zuordnen) wird ebenfalls über die DNS Delegation gemacht und erfolgt grundsätzlich über HSAdmin durch Löschen und Neuanlegen der Domain. Da die eigentliche Registrierung über das [http://www.domain-bestellsystem.de Domainbestellsystem] erfolgt, bleibt der Eigentümer der betreffenden Domain durch die Löschung über HSAdmin unverändert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Das ~/doms/example.org Verzeichnis, also alle Dateien im Webspace werden bei dieser Aktion komplett gelöscht. Sie müssen vorher manuell (am Besten in einem tar-archiv) gesichert werden! Auch die Zuordnung von Mailadressen der betreffenden Domain geht verloren und muß ggf. neu eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Der Hostsharing-Service (service@hostsharing.net) kann auch Verschiebungen mit minimalen Ausfallzeiten durchführen, bei aufwandsabhängiger Abrechnung gemäß dem Hostmaster-Stundensatz.&lt;br /&gt;
&lt;br /&gt;
= Status der Domaineinrichtung =&lt;br /&gt;
Der Domaineinrichtungs-Status kann  mit dem hsadmin-[[WebFrontend]] eingesehen werden oder mit [[hsadmin]] auf der Kommandozeile der [[Shell]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hsadmin -c domain.search&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Adresse von Owner / Admin-C ändern =&lt;br /&gt;
Die Änderung der Adressdaten erfolgt, indem die Adressdaten des zugehörigen [[Handles]] im [https://www.domain-bestellsystem.de Domain-Bestellsystem] aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= Eigene Verwaltung der Zonefiles =&lt;br /&gt;
Siehe [[Verwalten der Zonendaten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Hsadmin]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3590</id>
		<title>DAViCal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3590"/>
		<updated>2013-06-18T16:24:17Z</updated>

		<summary type="html">&lt;p&gt;Apc00: klarere, genauere Sätze&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen Client-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry, iCal, oder iPhone.&lt;br /&gt;
&lt;br /&gt;
Das CalDAV-Protokoll bietet viele Funktionen, die noch nicht von allen Clients unterstützt werden, darunter Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc.&lt;br /&gt;
&lt;br /&gt;
DAViCal ist in PHP geschrieben, lizensiert unter GPL.&lt;br /&gt;
&lt;br /&gt;
DAViCal erlaubt auch über das WebDAV-Protokoll Kalender zu lesen, aber nicht zu modifizieren.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
DAViCal erfordert folgende technische Ressourcen:&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Webserver mit PHP5&lt;br /&gt;
* Perl für den Installationsvorgang&lt;br /&gt;
* Ein Dateisystem mit erweiterten Attributen.&lt;br /&gt;
&lt;br /&gt;
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared-Hosting-Umgebung bei Hostsharing installiert und betreibt.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür [[Domainverwaltung#Lokale_Subdomains_durch_Aufschalten.3B_Delegieren|aufgeschalteten Subdomain]] über SSL betrieben wird. Für andere Konfigurationen, wie z.B. die Installation von DAViCal in einer als Unterverzeichnis von &amp;lt;tt&amp;gt;&#039;&#039;domain&#039;&#039;/subs/&amp;lt;/tt&amp;gt; erstellten Subdomain, muß dieses Verfahren leicht angepaßt werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von den übrigen Domaininhalten isoliert werden kann, z.B. php-Konfiguration oder auch anderen Domain-Admin.&lt;br /&gt;
&lt;br /&gt;
=== Subdomain aufschalten ===&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung werden folgende Daten als Konvention angenommen&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| (Sub)-Domain || &amp;lt;tt&amp;gt;cal.example.org&amp;lt;/tt&amp;gt;  || Die Sub-Domain unter der der DAViCal-Server betrieben wird&lt;br /&gt;
|-&lt;br /&gt;
| Domain-Admin || &amp;lt;tt&amp;gt;xyz00-hans&amp;lt;/tt&amp;gt; || Der User, dem die Sub-Domain delegiert wurde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quellen ===&lt;br /&gt;
&lt;br /&gt;
Für DAViCal werden neben dem eigentlichen Sourcecode des Projekts noch die PHP-Library [http://andrew.mcmillan.net.nz/projects/awl &#039;&#039;Andrew&#039;s Web Libraries&#039;&#039;] benötigt. Beides findet sich auf derselben Webseite.&lt;br /&gt;
&lt;br /&gt;
Die jeweils neuste Versionen befinden sich unter&lt;br /&gt;
* DAViCal: http://debian.mcmillan.net.nz/packages/davical/&lt;br /&gt;
* AWL: http://debian.mcmillan.net.nz/packages/awl/&lt;br /&gt;
&lt;br /&gt;
Hier jeweils die Source-Dateien *.tar.gz benutzen&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/var&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.46.tar.gz&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-0.9.9.4.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auspacken ====&lt;br /&gt;
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen wird die Dateierzeungsmaske temporär auf 022 gesetzt.&lt;br /&gt;
&lt;br /&gt;
Symbolische Links erzeugen generische Verzeichnise &amp;lt;tt&amp;gt;davical&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;awl&amp;lt;/tt&amp;gt;, die auf die jeweils installierte Version zeigen. Dies erleichtert spätere Versionswechsel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 022&lt;br /&gt;
$ tar xfvz awl-0.46.tar.gz&lt;br /&gt;
$ tar xfvz davical-0.9.9.4.tar.gz&lt;br /&gt;
$ ln -s awl-0.46 awl&lt;br /&gt;
$ ln -s davical-0.9.9.4 davical&lt;br /&gt;
$ umask 077&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL vorbereiten ===&lt;br /&gt;
&lt;br /&gt;
Es wird eine eigene PostgreSQL-Datenbank benötigt, sowie 2 Datenbanknutzer.&lt;br /&gt;
&lt;br /&gt;
==== Datenbank und -Nutzer anlegen ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| DB-Admin || &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, dem die Datenbank gehört und administrative Tätigkeiten durchführt&lt;br /&gt;
|-&lt;br /&gt;
| DB-Nutzer || &amp;lt;tt&amp;gt;xyz00_davical_app&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, der über DAViCal auf die Datenbank lesen/schreibend zugreift&lt;br /&gt;
|-&lt;br /&gt;
| Datenbank || &amp;lt;tt&amp;gt;xyz00_davical&amp;lt;/tt&amp;gt;  || Die Datenbank, die alle Daten für den DAViCal-Server enthält&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Umgebungsvariablen und &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Dabei wird &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; als Datenbank-Besitzer angegeben. Als Zeichensatz &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; (Default) auswählen.&lt;br /&gt;
&lt;br /&gt;
Sowohl für die weitere Installation, als auch für den Betrieb des Servers ist es am besten die Passwörter in die &amp;lt;tt&amp;gt;[http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html .pgpass]&amp;lt;/tt&amp;gt;-Datei zu schreiben, dann müssen sie nicht innerhalb der PHP-Dateien angebenen werden, bzw. während der Installation manuell eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_dba:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_app:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ chmod 0600 ~/.pgpass&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus werden noch Umgebungsvariablen gesetzt, so daß beim Aufruf von &amp;lt;tt&amp;gt;psql&amp;lt;/tt&amp;gt; über die Kommandozeile Datenbankname/Nutzer nicht eingegeben werden müssen. Diese Angaben sind nach Beenden der Shell-Sitzung automatisch zurückgesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ PGHOST=localhost &lt;br /&gt;
$ PGUSER=xyz00_davical_dba&lt;br /&gt;
$ PGDATABASE=xyz00_davical &lt;br /&gt;
$ export PGHOST PGUSER PGDATABASE &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PL/pgSQL installieren ====&lt;br /&gt;
&lt;br /&gt;
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese kann folgendermaßen angelegt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;CREATE LANGUAGE plpgsql;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Tabellen anlegen und initialisieren ===&lt;br /&gt;
&lt;br /&gt;
DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter &amp;lt;tt&amp;gt;davical/dba/create-database.sh&amp;lt;/tt&amp;gt;. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen der Datenbank, der -Nuter und kreieren von PL/pgSQL wurde bereits oben beschrieben. Darüberhinaus sind noch folgende Befehle auszuführen. Diese können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die &amp;lt;tt&amp;gt;PG*&amp;lt;/tt&amp;gt; Umgebungsvariablen gesetzt wurden und die &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt;-Datei gefüllt wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -f awl/dba/awl-tables.sql&lt;br /&gt;
$ psql -A -f awl/dba/schema-management.sql&lt;br /&gt;
$ psql -A -f davical/dba/davical.sql&lt;br /&gt;
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app&lt;br /&gt;
The database is version 8.4 currently at revision 1.2.9. &lt;br /&gt;
No patches were applied. &lt;br /&gt;
Supported locales updated. &lt;br /&gt;
Updated view: dav_principal.sql applied. &lt;br /&gt;
CalDAV functions updated. &lt;br /&gt;
RRULE functions updated. &lt;br /&gt;
Database permissions updated. &lt;br /&gt;
$ psql -A -f davical/dba/base-data.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den DAViCal-Admin muß noch ein Passwort gesetzt werden &amp;amp;ndash; &#039;&amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;&#039; vor dem Passwort ist hier wichtig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;UPDATE usr SET password = &#039;**geheim&#039; WHERE user_no = 1;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
DAViCal kann über eine &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat &amp;gt; davical/config/config.php&lt;br /&gt;
   $c-&amp;gt;pg_connect[] = &amp;quot;dbname=xyz00_davical user=xyz00_davical_app host=localhost&amp;quot;; &lt;br /&gt;
   $c-&amp;gt;use_persistent = true; &lt;br /&gt;
   $c-&amp;gt;sysabbr     = &#039;cal@example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;admin_email = &#039;admin@cal.example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;system_name = &#039;CalDAV Server example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;default_locale = &#039;de_DE&#039;; &lt;br /&gt;
   $c-&amp;gt;template_usr = array( &#039;active&#039; =&amp;gt; true, &lt;br /&gt;
                             &#039;locale&#039; =&amp;gt; &#039;de_DE&#039;, &lt;br /&gt;
                             &#039;date_format_type&#039; =&amp;gt; &#039;E&#039;, &lt;br /&gt;
                             &#039;email_ok&#039; =&amp;gt; date(&#039;Y-m-d&#039;) &lt;br /&gt;
                           ); &lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fast-CGI Patch ===&lt;br /&gt;
&lt;br /&gt;
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.&lt;br /&gt;
&lt;br /&gt;
In der Shared-Hosting-Umgebung von Hostsharing kann dies auch über ein Redirect in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt;-Datei gemacht gelöst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/htdocs-ssl&lt;br /&gt;
$ cat &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Regel muß die letzte in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; sein. Die Datei muß für alle lesbar sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 0644 .htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus muß noch die Datei &amp;lt;tt&amp;gt;davical/inc/HTTPAuthSession.php&amp;lt;/tt&amp;gt; angepasst werden. Hier ist die Variable &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt; ersetzt werden durch &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;REDIRECT_HTTP_AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt;. Außerdem gibt es noch einen Bug: Es wird an einer Stelle &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; statt &amp;lt;tt&amp;gt;explode&amp;lt;/tt&amp;gt; benutzt. &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; ist seit PHP 5.3.0 &#039;&#039;deprecated&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 @@ -87,8 +87,8 @@&lt;br /&gt;
      /**&lt;br /&gt;
      * Get HTTP Auth to work with PHP+FastCGI&lt;br /&gt;
      */&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;split&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;explode&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
        if ($type == &#039;Basic&#039;) {&lt;br /&gt;
          list ($user, $pass) = explode (&amp;quot;:&amp;quot;, base64_decode($cred));&lt;br /&gt;
          $_SERVER[&#039;PHP_AUTH_USER&#039;] = $user;                                                                                                    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]&lt;br /&gt;
=== Webspace aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org&lt;br /&gt;
$ rm htdocs-ssl&lt;br /&gt;
$ ln -s var/davical/htdocs htdocs-ssl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die URL des User-Interfaces lautet: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, erscheint der Login-Screen.&lt;br /&gt;
&lt;br /&gt;
== Nutzung ==&lt;br /&gt;
&lt;br /&gt;
=== User anlegen und konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen Nutzer anzulegen: &#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;User Functions&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Create Principal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Feld                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Principal ID || &#039;&#039;New Principal&#039;&#039;  || Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt&lt;br /&gt;
|-&lt;br /&gt;
| Username || hans || Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL&lt;br /&gt;
|-&lt;br /&gt;
| Change Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Confirm Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Fullname || Hans Meier || Der Name des Nutzers&lt;br /&gt;
|-&lt;br /&gt;
| Email Address || hans@example.org || Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen&lt;br /&gt;
|-&lt;br /&gt;
| Locale || Deutsch || &lt;br /&gt;
|-&lt;br /&gt;
| Date Format Style || European || &lt;br /&gt;
|-&lt;br /&gt;
| Principal Type || Person || Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || &amp;amp;ndash; || Falls der User Adminrechte bekommen soll&lt;br /&gt;
|-&lt;br /&gt;
| Active || X || Soll der Nutzer aktiv geführt werden?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des &#039;&#039;&#039;ersten&#039;&#039;&#039; Nutzers erscheint eine Fehlermeldung: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;ERROR: SQL error &amp;quot;23505&amp;quot; - ERROR: duplicate key value violates unique constraint &amp;quot;principal_pkey&amp;quot;&amp;quot; &lt;br /&gt;
 Home calendar added. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Bug. Siehe auch [http://lists.morphoss.com/pipermail/davical-dev/2011/000117.html Thread in Dev-Mailingliste].&lt;br /&gt;
&lt;br /&gt;
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff über Client-Programme ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf den Kalender erfolgt über die URL: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/user/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* user = Name des angelegte Nutzers, also z.B. &#039;&#039;&#039;&amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* home = Name des angelegten Kalenders; dies ist standardmäßig &#039;&#039;&#039;&amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt;&#039;&#039;&#039;. Andere Kalender (&#039;&#039;collection&#039;&#039;) können im User-Interface vom Nutzer angelegt werden, oder durch einen Client, der MKCALENDAR implementiert hat, so z.B. iCal oder Mulberry&lt;br /&gt;
&lt;br /&gt;
==== Beispiel Thunderbird ====&lt;br /&gt;
&lt;br /&gt;
Ist in Thunderbird die Lightning-Erweiterung installiert, dann kann der Kalender folgendermaßen eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Datei&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Neu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Kalender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf den Folgenden Seiten ist auszuwählen:&lt;br /&gt;
* &#039;&#039;Im Netzwerk&#039;&#039;&lt;br /&gt;
* &#039;&#039;CalDAV&#039;&#039;&lt;br /&gt;
* Spezifische Angaben&lt;br /&gt;
** Name, z.B. &#039;&#039;hans@example&#039;&#039;&lt;br /&gt;
** Farbe: auswählen in welcher Farbe der Kalender angezeigt werden soll&lt;br /&gt;
** Alarm: ja&lt;br /&gt;
** Email: Email auswählen&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird es wahrscheinlich noch eine Wahrnung geben, daß das SSL-Zertifikat ungültig ist, da in der Standard Hostsharing Konfiguration das hostsharing-Zertifikat ausgeliefert wird. Dieses muß dann noch importiert und akzeptiert werden.&lt;br /&gt;
&lt;br /&gt;
Thunderbird fragt dann noch nach Nuternamen und Passwort und wenn man erlaubt diese im Programm zu speichern, dann loggt sich Thunderbird zukünfitg selbständig ein.&lt;br /&gt;
&lt;br /&gt;
===== Mehrere Kalender auf gleichem Server =====&lt;br /&gt;
&lt;br /&gt;
Hat man mehrere Kalender auf dem gleichen Server &amp;amp;ndash; also z.B. mehrere User oder für einen User mehrere &#039;&#039;collections&#039;&#039;, dann kann Thunderbird diese nicht unterscheiden. Der Passwort-Manager arbeitet auf Grundlage der Domain. Siehe auch [https://bugzilla.mozilla.org/show_bug.cgi?id=247486 Bugzilla].&lt;br /&gt;
&lt;br /&gt;
Diesen Bug kann man relativ einfach umgehen, indem man weitere Subdomains anlegt, die auf die gleiche Installation verweisen, also z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/example.org/subs-ssl&lt;br /&gt;
$ mkdir cal1&lt;br /&gt;
$ mkdir cal2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und jeweils eine &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; in die neuen Verzeichnis mit folgendem Inhalt schreibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule ^.htaccess$ - [F]&lt;br /&gt;
RewriteRule ^(.*)$ https://cal.example.org/$1 [P]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht vergessen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
chmod 0644 cal1/.htaccess&lt;br /&gt;
chmod 0644 cal2/.htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hat man z.B. für User &amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt; die Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;work&amp;lt;/tt&amp;gt; und für User &amp;lt;tt&amp;gt;maria&amp;lt;/tt&amp;gt; den Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und möchte diese aus derselben Thunderbird-Instanz benutzen, können folgende URL&#039;s in Thundebrird konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/hans/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal1.example.org/caldav.php/hans/work&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal2.example.org/caldav.php/maria/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting für kürzere URL&#039;s ==&lt;br /&gt;
&lt;br /&gt;
TODO: .htaccess Beispiel&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* WIKI von DAViCal: http://wiki.davical.org&lt;br /&gt;
** [http://wiki.davical.org/w/CalDAV_Clients CalDAV Clients]&lt;br /&gt;
&lt;br /&gt;
* Alternativen&lt;br /&gt;
** [[RadicaleCalDAVServer]]&lt;br /&gt;
** [[ChandlerServer]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3589</id>
		<title>Domainverwaltung</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Domainverwaltung&amp;diff=3589"/>
		<updated>2013-06-18T16:19:53Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Sätze klarer und eindeutiger formuliert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HSDoku-DomainLinks}}&lt;br /&gt;
&lt;br /&gt;
= Lokale Subdomains =&lt;br /&gt;
&lt;br /&gt;
Subdomains sind Domains unterhalb der Hauptdomain. Also das www in www.example.com, test in test.example.com usw. Bei Hostsharing können beliebig viele verschiedene Subdomains angelegt werden.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Unterverzeichnis in doms/&#039;domain&#039;/subs/ ==&lt;br /&gt;
&lt;br /&gt;
Man kann eine Subdomain erstellen, indem man unter [[~/]]doms/&#039;example.org&#039;/subs/ ein Unterverzeichnis erstellt.&lt;br /&gt;
&lt;br /&gt;
Ein Unterverzeichnis mit dem Namen [[~/]]doms/&#039;example.org&#039;/subs/muster ergibt beispielsweise die Subdomain muster.example.org.&lt;br /&gt;
&lt;br /&gt;
== Lokale Subdomains durch Aufschalten; Delegieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Aufschalten&amp;quot; bedeutet in der Hostsharing-Doku, daß eine Subdomain so eingerichtet wird, daß sie neben der Hauptdomain eine eigene Existenz führt, sowohl als Verzeichnis unter [[~/]]doms/ als auch im DNS.&lt;br /&gt;
&lt;br /&gt;
Eine Subdomain wie muster.example.org kann dabei im gleichen Paket mit der Hauptdomain example.org oder ib einem anderen Paket aufgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zum gleichen Paket wie die übergeordnete Domain gehören soll, kann sie der Paket-Admin mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain zu einem anderen Paket des gleichen HS-Mitglieds gehören soll, kann sie der Paket-Admin unter seinem Mitgliedsaccount (hsh00-xyz) mittels [[HSAdmin]] einrichten.&lt;br /&gt;
&lt;br /&gt;
* Wenn die Subdomain an ein anderes Mitglied delegiert werden soll, müssen sich beide Mitglieder mit diesem Wunsch an den Hostsharing-Service wenden. Der Hostsharing-Service richtet die Subdomain ein, wenn ihm übereinstimmende Willenserklärungen der beteiligten Mitglieder vorliegen.&lt;br /&gt;
&lt;br /&gt;
= Domains neu zuordnen (Domain-Admin ändern, Paketzuordnung ändern) =&lt;br /&gt;
&lt;br /&gt;
Eine Domain-Verschiebung (neu zuordnen) wird ebenfalls über die DNS Delegation gemacht und erfolgt grundsätzlich über HSAdmin durch Löschen und Neuanlegen der Domain. Da die eigentliche Registrierung über das [http://www.domain-bestellsystem.de Domainbestellsystem] erfolgt, bleibt der Eigentümer der betreffenden Domain durch die Löschung über HSAdmin unverändert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Das ~/doms/example.org Verzeichnis, also alle Dateien im Webspace werden bei dieser Aktion komplett gelöscht. Sie müssen vorher manuell (am Besten in einem tar-archiv) gesichert werden! Auch die Zuordnung von Mailadressen der betreffenden Domain geht verloren und muß ggf. neu eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Der Hostsharing-Service (service@hostsharing.net) kann auch Verschiebungen mit minimalen Ausfallzeiten durchführen, bei aufwandsabhängiger Abrechnung gemäß dem Hostmaster-Stundensatz.&lt;br /&gt;
&lt;br /&gt;
= Status der Domaineinrichtung =&lt;br /&gt;
Der Domaineinrichtungs-Status kann  mit dem hsadmin-[[WebFrontend]] eingesehen werden oder mit [[hsadmin]] auf der Kommandozeile der [[Shell]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hsadmin -c domain.search&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Adresse von Owner / Admin-C ändern =&lt;br /&gt;
Die Änderung der Adressdaten erfolgt, indem die Adressdaten des zugehörigen [[Handles]] im [https://www.domain-bestellsystem.de Domain-Bestellsystem] aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
= Eigene Verwaltung der Zonefiles =&lt;br /&gt;
Siehe [[Verwalten der Zonendaten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Domains]]&lt;br /&gt;
[[Kategorie:Hsadmin]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3588</id>
		<title>DAViCal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=DAViCal_installieren&amp;diff=3588"/>
		<updated>2013-06-18T16:04:43Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Sätze klarer formuliert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemein ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen Client-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry, iCal, oder iPhone.&lt;br /&gt;
&lt;br /&gt;
Das CalDAV-Protokoll bietet viele Funktionen, die noch nicht von allen Clients unterstützt werden, darunter Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc.&lt;br /&gt;
&lt;br /&gt;
DAViCal ist in PHP geschrieben, lizensiert unter GPL.&lt;br /&gt;
&lt;br /&gt;
DAViCal erlaubt auch über das WebDAV-Protokoll Kalender zu lesen, aber nicht zu modifizieren.&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
DAViCal erfordert folgende technische Ressourcen:&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Webserver mit PHP5&lt;br /&gt;
* Perl für den Installationsvorgang&lt;br /&gt;
* Ein Dateisystem mit erweiterten Attributen.&lt;br /&gt;
&lt;br /&gt;
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared-Hosting-Umgebung bei Hostsharing installiert und betreibt.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür aufgeschalteten Subdomain über SSL betrieben wird. Für andere Konfigurationen, wie z.B. Installation in einer Subdomain im &amp;lt;tt&amp;gt;sub&amp;lt;/tt&amp;gt;-Verzeichnis müssen kleine Anpassungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von den übrigen Domaininhalten isoliert werden kann, z.B. php-Konfiguration oder auch anderen Domain-Admin.&lt;br /&gt;
&lt;br /&gt;
=== Subdomain aufschalten ===&lt;br /&gt;
&lt;br /&gt;
Für diese Anleitung werden folgende Daten als Konvention angenommen&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| (Sub)-Domain || &amp;lt;tt&amp;gt;cal.example.org&amp;lt;/tt&amp;gt;  || Die Sub-Domain unter der der DAViCal-Server betrieben wird&lt;br /&gt;
|-&lt;br /&gt;
| Domain-Admin || &amp;lt;tt&amp;gt;xyz00-hans&amp;lt;/tt&amp;gt; || Der User, dem die Sub-Domain delegiert wurde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quellen ===&lt;br /&gt;
&lt;br /&gt;
Für DAViCal werden neben dem eigentlichen Sourcecode des Projekts noch die PHP-Library [http://andrew.mcmillan.net.nz/projects/awl &#039;&#039;Andrew&#039;s Web Libraries&#039;&#039;] benötigt. Beides findet sich auf derselben Webseite.&lt;br /&gt;
&lt;br /&gt;
Die jeweils neuste Versionen befinden sich unter&lt;br /&gt;
* DAViCal: http://debian.mcmillan.net.nz/packages/davical/&lt;br /&gt;
* AWL: http://debian.mcmillan.net.nz/packages/awl/&lt;br /&gt;
&lt;br /&gt;
Hier jeweils die Source-Dateien *.tar.gz benutzen&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/var&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.46.tar.gz&lt;br /&gt;
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-0.9.9.4.tar.gz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auspacken ====&lt;br /&gt;
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen wird die Dateierzeungsmaske temporär auf 022 gesetzt.&lt;br /&gt;
&lt;br /&gt;
Symbolische Links erzeugen generische Verzeichnise &amp;lt;tt&amp;gt;davical&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;awl&amp;lt;/tt&amp;gt;, die auf die jeweils installierte Version zeigen. Dies erleichtert spätere Versionswechsel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ umask 022&lt;br /&gt;
$ tar xfvz awl-0.46.tar.gz&lt;br /&gt;
$ tar xfvz davical-0.9.9.4.tar.gz&lt;br /&gt;
$ ln -s awl-0.46 awl&lt;br /&gt;
$ ln -s davical-0.9.9.4 davical&lt;br /&gt;
$ umask 077&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL vorbereiten ===&lt;br /&gt;
&lt;br /&gt;
Es wird eine eigene PostgreSQL-Datenbank benötigt, sowie 2 Datenbanknutzer.&lt;br /&gt;
&lt;br /&gt;
==== Datenbank und -Nutzer anlegen ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Typ                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| DB-Admin || &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, dem die Datenbank gehört und administrative Tätigkeiten durchführt&lt;br /&gt;
|-&lt;br /&gt;
| DB-Nutzer || &amp;lt;tt&amp;gt;xyz00_davical_app&amp;lt;/tt&amp;gt; || Der PostgreSQL-Nutzer, der über DAViCal auf die Datenbank lesen/schreibend zugreift&lt;br /&gt;
|-&lt;br /&gt;
| Datenbank || &amp;lt;tt&amp;gt;xyz00_davical&amp;lt;/tt&amp;gt;  || Die Datenbank, die alle Daten für den DAViCal-Server enthält&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Umgebungsvariablen und &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Dabei wird &amp;lt;tt&amp;gt;xyz00_davical_dba&amp;lt;/tt&amp;gt; als Datenbank-Besitzer angegeben. Als Zeichensatz &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; (Default) auswählen.&lt;br /&gt;
&lt;br /&gt;
Sowohl für die weitere Installation, als auch für den Betrieb des Servers ist es am besten die Passwörter in die &amp;lt;tt&amp;gt;[http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html .pgpass]&amp;lt;/tt&amp;gt;-Datei zu schreiben, dann müssen sie nicht innerhalb der PHP-Dateien angebenen werden, bzw. während der Installation manuell eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_dba:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ echo &amp;quot;localhost:5432:*:xyz00_davical_app:geheimes_passwort&amp;quot; &amp;gt;&amp;gt; ~/.pgpass&lt;br /&gt;
$ chmod 0600 ~/.pgpass&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus werden noch Umgebungsvariablen gesetzt, so daß beim Aufruf von &amp;lt;tt&amp;gt;psql&amp;lt;/tt&amp;gt; über die Kommandozeile Datenbankname/Nutzer nicht eingegeben werden müssen. Diese Angaben sind nach Beenden der Shell-Sitzung automatisch zurückgesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ PGHOST=localhost &lt;br /&gt;
$ PGUSER=xyz00_davical_dba&lt;br /&gt;
$ PGDATABASE=xyz00_davical &lt;br /&gt;
$ export PGHOST PGUSER PGDATABASE &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PL/pgSQL installieren ====&lt;br /&gt;
&lt;br /&gt;
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese kann folgendermaßen angelegt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;CREATE LANGUAGE plpgsql;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Datenbank-Tabellen anlegen und initialisieren ===&lt;br /&gt;
&lt;br /&gt;
DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter &amp;lt;tt&amp;gt;davical/dba/create-database.sh&amp;lt;/tt&amp;gt;. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.&lt;br /&gt;
&lt;br /&gt;
Das Anlegen der Datenbank, der -Nuter und kreieren von PL/pgSQL wurde bereits oben beschrieben. Darüberhinaus sind noch folgende Befehle auszuführen. Diese können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die &amp;lt;tt&amp;gt;PG*&amp;lt;/tt&amp;gt; Umgebungsvariablen gesetzt wurden und die &amp;lt;tt&amp;gt;.pgpass&amp;lt;/tt&amp;gt;-Datei gefüllt wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -f awl/dba/awl-tables.sql&lt;br /&gt;
$ psql -A -f awl/dba/schema-management.sql&lt;br /&gt;
$ psql -A -f davical/dba/davical.sql&lt;br /&gt;
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app&lt;br /&gt;
The database is version 8.4 currently at revision 1.2.9. &lt;br /&gt;
No patches were applied. &lt;br /&gt;
Supported locales updated. &lt;br /&gt;
Updated view: dav_principal.sql applied. &lt;br /&gt;
CalDAV functions updated. &lt;br /&gt;
RRULE functions updated. &lt;br /&gt;
Database permissions updated. &lt;br /&gt;
$ psql -A -f davical/dba/base-data.sql&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den DAViCal-Admin muß noch ein Passwort gesetzt werden &amp;amp;ndash; &#039;&amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;&#039; vor dem Passwort ist hier wichtig.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ psql -A -c &amp;quot;UPDATE usr SET password = &#039;**geheim&#039; WHERE user_no = 1;&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
DAViCal kann über eine &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] zu finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat &amp;gt; davical/config/config.php&lt;br /&gt;
   $c-&amp;gt;pg_connect[] = &amp;quot;dbname=xyz00_davical user=xyz00_davical_app host=localhost&amp;quot;; &lt;br /&gt;
   $c-&amp;gt;use_persistent = true; &lt;br /&gt;
   $c-&amp;gt;sysabbr     = &#039;cal@example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;admin_email = &#039;admin@cal.example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;system_name = &#039;CalDAV Server example.org&#039;; &lt;br /&gt;
   $c-&amp;gt;default_locale = &#039;de_DE&#039;; &lt;br /&gt;
   $c-&amp;gt;template_usr = array( &#039;active&#039; =&amp;gt; true, &lt;br /&gt;
                             &#039;locale&#039; =&amp;gt; &#039;de_DE&#039;, &lt;br /&gt;
                             &#039;date_format_type&#039; =&amp;gt; &#039;E&#039;, &lt;br /&gt;
                             &#039;email_ok&#039; =&amp;gt; date(&#039;Y-m-d&#039;) &lt;br /&gt;
                           ); &lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fast-CGI Patch ===&lt;br /&gt;
&lt;br /&gt;
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.&lt;br /&gt;
&lt;br /&gt;
In der Shared-Hosting-Umgebung von Hostsharing kann dies auch über ein Redirect in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt;-Datei gemacht gelöst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org/htdocs-ssl&lt;br /&gt;
$ cat &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Regel muß die letzte in der &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; sein. Die Datei muß für alle lesbar sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod 0644 .htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Darüberhinaus muß noch die Datei &amp;lt;tt&amp;gt;davical/inc/HTTPAuthSession.php&amp;lt;/tt&amp;gt; angepasst werden. Hier ist die Variable &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt; ersetzt werden durch &amp;lt;tt&amp;gt;$_SERVER[&amp;quot;REDIRECT_HTTP_AUTHORIZATION&amp;quot;]&amp;lt;/tt&amp;gt;. Außerdem gibt es noch einen Bug: Es wird an einer Stelle &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; statt &amp;lt;tt&amp;gt;explode&amp;lt;/tt&amp;gt; benutzt. &amp;lt;tt&amp;gt;split()&amp;lt;/tt&amp;gt; ist seit PHP 5.3.0 &#039;&#039;deprecated&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 @@ -87,8 +87,8 @@&lt;br /&gt;
      /**&lt;br /&gt;
      * Get HTTP Auth to work with PHP+FastCGI&lt;br /&gt;
      */&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;-      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;split&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+    if (isset($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;]) &amp;amp;&amp;amp; !empty($_SERVER[&amp;quot;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&amp;quot;])) {&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightgreen&amp;quot;&amp;gt;+      list ($type, $cred) = &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;explode&amp;lt;/span&amp;gt; (&amp;quot; &amp;quot;, $_SERVER[&#039;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;REDIRECT_HTTP_AUTHORIZATION&amp;lt;/span&amp;gt;&#039;]);&amp;lt;/span&amp;gt;&lt;br /&gt;
        if ($type == &#039;Basic&#039;) {&lt;br /&gt;
          list ($user, $pass) = explode (&amp;quot;:&amp;quot;, base64_decode($cred));&lt;br /&gt;
          $_SERVER[&#039;PHP_AUTH_USER&#039;] = $user;                                                                                                    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]&lt;br /&gt;
=== Webspace aktivieren ===&lt;br /&gt;
&lt;br /&gt;
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/cal.example.org&lt;br /&gt;
$ rm htdocs-ssl&lt;br /&gt;
$ ln -s var/davical/htdocs htdocs-ssl&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die URL des User-Interfaces lautet: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn alles richtig gemacht wurde, erscheint der Login-Screen.&lt;br /&gt;
&lt;br /&gt;
== Nutzung ==&lt;br /&gt;
&lt;br /&gt;
=== User anlegen und konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen Nutzer anzulegen: &#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;User Functions&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Create Principal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- class=&amp;quot;hintergrundfarbe5&amp;quot;&lt;br /&gt;
! Feld                                          !! Wert                                !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Principal ID || &#039;&#039;New Principal&#039;&#039;  || Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt&lt;br /&gt;
|-&lt;br /&gt;
| Username || hans || Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL&lt;br /&gt;
|-&lt;br /&gt;
| Change Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Confirm Password || geheimespasswort || &lt;br /&gt;
|-&lt;br /&gt;
| Fullname || Hans Meier || Der Name des Nutzers&lt;br /&gt;
|-&lt;br /&gt;
| Email Address || hans@example.org || Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen&lt;br /&gt;
|-&lt;br /&gt;
| Locale || Deutsch || &lt;br /&gt;
|-&lt;br /&gt;
| Date Format Style || European || &lt;br /&gt;
|-&lt;br /&gt;
| Principal Type || Person || Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)&lt;br /&gt;
|-&lt;br /&gt;
| Administrator || &amp;amp;ndash; || Falls der User Adminrechte bekommen soll&lt;br /&gt;
|-&lt;br /&gt;
| Active || X || Soll der Nutzer aktiv geführt werden?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beim Anlegen des &#039;&#039;&#039;ersten&#039;&#039;&#039; Nutzers erscheint eine Fehlermeldung: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background-color:lightsalmon&amp;quot;&amp;gt;ERROR: SQL error &amp;quot;23505&amp;quot; - ERROR: duplicate key value violates unique constraint &amp;quot;principal_pkey&amp;quot;&amp;quot; &lt;br /&gt;
 Home calendar added. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein Bug. Siehe auch [http://lists.morphoss.com/pipermail/davical-dev/2011/000117.html Thread in Dev-Mailingliste].&lt;br /&gt;
&lt;br /&gt;
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)&lt;br /&gt;
&lt;br /&gt;
=== Zugriff über Client-Programme ===&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf den Kalender erfolgt über die URL: &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/user/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* user = Name des angelegte Nutzers, also z.B. &#039;&#039;&#039;&amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* home = Name des angelegten Kalenders; dies ist standardmäßig &#039;&#039;&#039;&amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt;&#039;&#039;&#039;. Andere Kalender (&#039;&#039;collection&#039;&#039;) können im User-Interface vom Nutzer angelegt werden, oder durch einen Client, der MKCALENDAR implementiert hat, so z.B. iCal oder Mulberry&lt;br /&gt;
&lt;br /&gt;
==== Beispiel Thunderbird ====&lt;br /&gt;
&lt;br /&gt;
Ist in Thunderbird die Lightning-Erweiterung installiert, dann kann der Kalender folgendermaßen eingerichtet werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Datei&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Neu&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Kalender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf den Folgenden Seiten ist auszuwählen:&lt;br /&gt;
* &#039;&#039;Im Netzwerk&#039;&#039;&lt;br /&gt;
* &#039;&#039;CalDAV&#039;&#039;&lt;br /&gt;
* Spezifische Angaben&lt;br /&gt;
** Name, z.B. &#039;&#039;hans@example&#039;&#039;&lt;br /&gt;
** Farbe: auswählen in welcher Farbe der Kalender angezeigt werden soll&lt;br /&gt;
** Alarm: ja&lt;br /&gt;
** Email: Email auswählen&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird es wahrscheinlich noch eine Wahrnung geben, daß das SSL-Zertifikat ungültig ist, da in der Standard Hostsharing Konfiguration das hostsharing-Zertifikat ausgeliefert wird. Dieses muß dann noch importiert und akzeptiert werden.&lt;br /&gt;
&lt;br /&gt;
Thunderbird fragt dann noch nach Nuternamen und Passwort und wenn man erlaubt diese im Programm zu speichern, dann loggt sich Thunderbird zukünfitg selbständig ein.&lt;br /&gt;
&lt;br /&gt;
===== Mehrere Kalender auf gleichem Server =====&lt;br /&gt;
&lt;br /&gt;
Hat man mehrere Kalender auf dem gleichen Server &amp;amp;ndash; also z.B. mehrere User oder für einen User mehrere &#039;&#039;collections&#039;&#039;, dann kann Thunderbird diese nicht unterscheiden. Der Passwort-Manager arbeitet auf Grundlage der Domain. Siehe auch [https://bugzilla.mozilla.org/show_bug.cgi?id=247486 Bugzilla].&lt;br /&gt;
&lt;br /&gt;
Diesen Bug kann man relativ einfach umgehen, indem man weitere Subdomains anlegt, die auf die gleiche Installation verweisen, also z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /home/doms/example.org/subs-ssl&lt;br /&gt;
$ mkdir cal1&lt;br /&gt;
$ mkdir cal2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und jeweils eine &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; in die neuen Verzeichnis mit folgendem Inhalt schreibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteRule ^.htaccess$ - [F]&lt;br /&gt;
RewriteRule ^(.*)$ https://cal.example.org/$1 [P]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht vergessen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
chmod 0644 cal1/.htaccess&lt;br /&gt;
chmod 0644 cal2/.htaccess&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hat man z.B. für User &amp;lt;tt&amp;gt;hans&amp;lt;/tt&amp;gt; die Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und &amp;lt;tt&amp;gt;work&amp;lt;/tt&amp;gt; und für User &amp;lt;tt&amp;gt;maria&amp;lt;/tt&amp;gt; den Kalender &amp;lt;tt&amp;gt;home&amp;lt;/tt&amp;gt; und möchte diese aus derselben Thunderbird-Instanz benutzen, können folgende URL&#039;s in Thundebrird konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal.example.org/caldav.php/hans/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal1.example.org/caldav.php/hans/work&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://cal2.example.org/caldav.php/maria/home&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URL Rewriting für kürzere URL&#039;s ==&lt;br /&gt;
&lt;br /&gt;
TODO: .htaccess Beispiel&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
* WIKI von DAViCal: http://wiki.davical.org&lt;br /&gt;
** [http://wiki.davical.org/w/CalDAV_Clients CalDAV Clients]&lt;br /&gt;
&lt;br /&gt;
* Alternativen&lt;br /&gt;
** [[RadicaleCalDAVServer]]&lt;br /&gt;
** [[ChandlerServer]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:CalDAV]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=2779</id>
		<title>Mailman Installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailman_Installieren&amp;diff=2779"/>
		<updated>2010-12-29T18:44:38Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was noch jemand ergänzen müsste:&lt;br /&gt;
* Eine generische virtuser/alias Konfiguration finden und dokumentieren. &amp;lt;br&amp;gt;&lt;br /&gt;
http://listes.rezo.net/how.php&amp;lt;br&amp;gt; http://www.gnu.org/software/mailman/mailman-install/mail-server.html&lt;br /&gt;
&lt;br /&gt;
* Skriptautomatisierung updaten &amp;lt;br&amp;gt; http://hs.andreasloesch.de/pac-mm-install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation == &lt;br /&gt;
&lt;br /&gt;
Installationsanleitung von Mailman&amp;lt;br&amp;gt;&lt;br /&gt;
(zuletzt getestet mit mailman-2.1.12 in eigenem Paketuser)&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!&lt;br /&gt;
&lt;br /&gt;
Mailman kann vom Paketadmin oder vom Paketuser installiert werden. Wenn er vom Paketadmin installiert wird, haben jedoch ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Zur Separation von Paketadminrechten und anderen Paketusern ist es vorzuziehen Mailman in einem Paketuser  Account zu installieren. (Bspw. xyz00-listen) Und diesem separaten User ggf mehrere lists.*.* Subdomains aufzuschalten.&lt;br /&gt;
&lt;br /&gt;
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung werden (wie immer bei .forward) die Rechte des Zielusers angenommen. (So läuft das auch bei procmail.)&lt;br /&gt;
&lt;br /&gt;
Nachteil der Installation als Paketuser ist lediglich, dass bisher so nicht die Paketdomain mit dem SSL Zertifikat von Hostsharing genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Sourcen besorgen und entpacken ===&lt;br /&gt;
&lt;br /&gt;
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen.&lt;br /&gt;
&lt;br /&gt;
 ~$ tar -xzvf mailman-2.1.12.tgz&lt;br /&gt;
&lt;br /&gt;
=== Log-Verzeichnis anlegen ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
 ~$ mkdir -p mailman/var&lt;br /&gt;
 ~$ chmod 02775 mailman/var&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mkdir var/mailman&lt;br /&gt;
 ~$ chmod 02775 var/mailman&lt;br /&gt;
&lt;br /&gt;
=== Kompilieren ===&lt;br /&gt;
&lt;br /&gt;
Braucht einige Optionen, die anzupassen sind.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd mailman-2.1.12&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser:&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/XYZ00/users/listen/mailman \&lt;br /&gt;
              --with-username=XYZ00-listen \&lt;br /&gt;
              --with-groupname=XYZ00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/XYZ00/users/listen/mailman/var \&lt;br /&gt;
              --with-cgi-gid=XYZ00 \&lt;br /&gt;
              --with-mail-gid=XYZ00&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
      ~/mailman-2.1.12$ ./configure --prefix=/home/pacs/XYZ00/mailman \&lt;br /&gt;
              --with-username=XYZ00 \&lt;br /&gt;
              --with-groupname=XYZ00 \&lt;br /&gt;
              --with-var-prefix=/home/pacs/XYZ00/var/mailman \&lt;br /&gt;
              --with-cgi-gid=XYZ00 \&lt;br /&gt;
              --with-mail-gid=nogroup&lt;br /&gt;
(die \ bedeuten, dass alles in eine Zeile gehört, bzw. die Returns nicht interpretiert werden sollen.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anschließend:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.12$ make&lt;br /&gt;
 ~/mailman-2.1.12$ make install&lt;br /&gt;
&lt;br /&gt;
=== Datenrechte prüfen ===&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber die Dateirechte prüfen (und ggf. korrigieren) lassen:&lt;br /&gt;
&lt;br /&gt;
 ~/mailman-2.1.12$ cd ..      &lt;br /&gt;
 ~$ mailman/bin/check_perms -f&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
&lt;br /&gt;
=== mm_cfg.py ===&lt;br /&gt;
&lt;br /&gt;
Konfigurationsdatei editieren:&lt;br /&gt;
&lt;br /&gt;
 ~$ nano mailman/Mailman/mm_cfg.py&lt;br /&gt;
      &lt;br /&gt;
Eine Beispielkonfiguration für lists.example.com könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
      ##################################################&lt;br /&gt;
      # Put YOUR site-specific settings below this line.&lt;br /&gt;
      # -*- python -*-&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_HOST_NAME = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      DEFAULT_URL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
      add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_SERVER_LANGUAGE = &#039;de&#039;&lt;br /&gt;
 &lt;br /&gt;
      DEFAULT_URL_PATTERN = &#039;http://%s/&#039;&lt;br /&gt;
&lt;br /&gt;
In ~/mailman/Mailman/Defaults.py seht ihr, was man in mm_cfg.py alles einstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== CGIs in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser: Die CGIs müssen in das jeweilige Domain-Verzeichnis, auf denen das Mailman Webfrontend laufen soll, kopiert werden. Ein Verlinken ist nicht möglich. Zusätzlich muss das sticky-Flag entfernt werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mkdir ~/doms/lists.example.com/cgi/mailman&lt;br /&gt;
 ~$ cp mailman/cgi-bin/* doms/lists.example.com/cgi/mailman/&lt;br /&gt;
 ~$ chmod g-s ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin: CGIs in alle Domain-Verzeichnisse linken, auf denen das Mailman Webfrontend laufen soll. &lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/cgi&lt;br /&gt;
 ~/doms/lists.example.com/cgi$ ln -s ../../../mailman/cgi-bin mailman&lt;br /&gt;
&lt;br /&gt;
===  Icons in die Domains ===&lt;br /&gt;
&lt;br /&gt;
Die Icons können wahlweise verlinkt oder kopiert werden.&lt;br /&gt;
&lt;br /&gt;
 ~$ cd doms/lists.example.com/htdocs&lt;br /&gt;
 ~/doms/lists.example.com/htdocs$ ln -s ../../../mailman/icons&lt;br /&gt;
&lt;br /&gt;
oder kopieren&lt;br /&gt;
&lt;br /&gt;
 ~$ cp -R mailman/icons doms/lists.example.com/htdocs/&lt;br /&gt;
&lt;br /&gt;
=== .htaccess ===&lt;br /&gt;
&lt;br /&gt;
Bei einer extra Mailman Domain dafür sorgen, dass Mailman auch unter lists.example.com statt unter lists.example.com/cgi-bin/mailman erreichbar ist.&lt;br /&gt;
In ~/doms/lists.example.com/htdocs/.htaccess folgendes eintragen (bitte RewriteCond für Icons beachten; ohne wird der Pfad für diese auch gemappt, was nicht korrekt ist):&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond	%{REQUEST_URI}		!^/icons/&lt;br /&gt;
 RewriteRule	^(.*)$			/cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule	^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Mailman z.B. auf der www Domain läuft und unter www.example.com/mailman statt www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs/www/.htaccess:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule    ^mailman/(.*)$          /cgi-bin/mailman/$1&lt;br /&gt;
 RewriteRule    ^/cgi-bin/mailman/$	/cgi-bin/mailman/listinfo&lt;br /&gt;
&lt;br /&gt;
(Die DEFAULT_URL_PATTERN Zeile in der mm_cfg.py kann für diesen Fall einfach auskommentiert werden.)&lt;br /&gt;
&lt;br /&gt;
=== Passwort setzen ===&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/mmsitepass&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs einrichten ===&lt;br /&gt;
&lt;br /&gt;
In die [[Cron |Crontab]] wird z.B. eingetragen:&lt;br /&gt;
&lt;br /&gt;
 * * * * *	~/mailman/bin/qrunner -o -r All&lt;br /&gt;
 47 * * * *	rm -f ~/var/mailman/logs/qrunner&lt;br /&gt;
(Queuebearbeitung alle Minute, löschen der Verarbeitungslogs in der 47ten Minute jeder Std.)&lt;br /&gt;
&lt;br /&gt;
Dies übernimmt die Funktion des qrunner-Dämons, der bei Mailman normalerweise laufen würde.&lt;br /&gt;
Das Logfile wird gelöscht, da es sonst sehr schnell sehr groß wird.&lt;br /&gt;
&lt;br /&gt;
Zudem müssen noch die Cronjobs aus ~/mailman/cron/crontab.in eingefügt werden. &lt;br /&gt;
&lt;br /&gt;
 crontab -l &amp;gt; mycronjobs.tmp&lt;br /&gt;
 cat ~/mailman/cron/crontab.in &amp;gt;&amp;gt; mycronjobs.tmp&lt;br /&gt;
 crontab mycronjobs.tmp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailinglisten einrichten ==&lt;br /&gt;
&lt;br /&gt;
=== Als erste Liste die &amp;quot;mailman&amp;quot; &amp;quot;site list&amp;quot; Einrichten ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;site list&amp;quot; mit dem Namen &amp;quot;mailman&amp;quot; ist die Mailingliste der lokalen Mailman Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.&lt;br /&gt;
&lt;br /&gt;
Neue Liste anlegen:&lt;br /&gt;
 ~$ mailman/bin/newlist mailman&lt;br /&gt;
 Enter the email of the person running the list: admin@xyz00.hostsharing.net&lt;br /&gt;
 Initial mailman password:&lt;br /&gt;
&lt;br /&gt;
Nur für die &amp;quot;mailman site list&amp;quot;: Konfigurationsvorgaben laden.&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin:&lt;br /&gt;
 ~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman&lt;br /&gt;
&lt;br /&gt;
(Diese Konfigurationsdatei nicht auf eigene Listen anwenden.)&lt;br /&gt;
&lt;br /&gt;
=== Email Adressen einrichten === &lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketuser erfolgt die Einrichtung der Emailadressen per hsadmin (virtusertable) und .forward Dateien.&lt;br /&gt;
Anlegen mittels [[hsadmin|hsadmin CLI]].&lt;br /&gt;
&lt;br /&gt;
Beispiel für lists.example.com und Paketuser XYZ00-listen.&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-admin -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-admin&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-bounces -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-bounces&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-confirm -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-confirm&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-join -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-join&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-leave -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-leave&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-owner -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-owner&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-request -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-request&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-subscribe -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-subscribe&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-unsubscribe -s domain=lists.example.com -s &#039;target=XYZ00-listen+mailman-unsubscribe&#039;&lt;br /&gt;
&lt;br /&gt;
Im Homeverzeichnis des Users XYZ00-listen werden anschließend entsprechende .forward-Dateien angelegt.&lt;br /&gt;
&lt;br /&gt;
B) .forward Dateien:&lt;br /&gt;
 echo &#039;admin@XYZ00.hostsharing.net&#039; &amp;gt; .forward # Weiterleitung von cron Fehlern etc an Paketadmin.&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman post mailman&amp;quot;&#039; &amp;gt; .forward+mailman&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman admin mailman&amp;quot;&#039; &amp;gt; .forward+mailman-admin&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman bounces mailman&amp;quot;&#039; &amp;gt; .forward+mailman-bounces&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman confirm mailman&amp;quot;&#039; &amp;gt; .forward+mailman-confirm&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman join mailman&amp;quot;&#039; &amp;gt; .forward+mailman-join&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman leave mailman&amp;quot;&#039; &amp;gt; .forward+mailman-leave&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman owner mailman&amp;quot;&#039; &amp;gt; .forward+mailman-owner&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman request mailman&amp;quot;&#039; &amp;gt; .forward+mailman-request&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman subscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-subscribe&lt;br /&gt;
 echo &#039;&amp;quot;|/home/pacs/XYZ00/users/listen/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039; &amp;gt; .forward+mailman-unsubscribe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der Installation als Paketadmin XYZ00 erfolgt die Einrichtung hingegen per hsadmin (virtusertable) und hsadmin (aliases) so:&lt;br /&gt;
&lt;br /&gt;
A) virtusertable:&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman -s domain=lists.example.com -s &#039;target=XYZ00-mailman&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-admin -s domain=lists.example.com -s &#039;target=XYZ00-mailman-admin&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-bounces -s domain=lists.example.com -s &#039;target=XYZ00-mailman-bounces&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-confirm -s domain=lists.example.com -s &#039;target=XYZ00-mailman-confirm&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-join -s domain=lists.example.com -s &#039;target=XYZ00-mailman-join&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-leave -s domain=lists.example.com -s &#039;target=XYZ00-mailman-leave&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-owner -s domain=lists.example.com -s &#039;target=XYZ00-mailman-owner&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-request -s domain=lists.example.com -s &#039;target=XYZ00-mailman-request&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-subscribe -s domain=lists.example.com -s &#039;target=XYZ00-mailman-subscribe&#039;&lt;br /&gt;
 hsadmin -c emailaddress.add -s localpart=mailman-unsubscribe -s domain=lists.example.com -s &#039;target=XYZ00-mailman-unsubscribe&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Die e-Mail Adressen und die Targets, welche noch in den Aliasen definiert werden müssen, können von Domain und Mailingliste unterschiedlich sein bzw. müssen bei mehreren identische Listen unterschiedlich sein!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Die bei den Mail-Adressen oben angegebenen Aliase werden mit [[hsadmin|hsadmin CLI]] angelegt.&lt;br /&gt;
&lt;br /&gt;
B) aliase:&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman post mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-admin&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman admin mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-bounces&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman bounces mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-confirm&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman confirm mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-join&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman join mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-leave&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman leave mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-owner&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman owner mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-request&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman request mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-subscribe&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman subscribe mailman&amp;quot;&#039;&lt;br /&gt;
 hsadmin -c emailalias.add -s name=&#039;XYZ00-mailman-unsubscribe&#039; -s &#039;target=&amp;quot;|/home/pacs/XYZ00/mailman/mail/mailman unsubscribe mailman&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Die Aliase und die Targets können von Domain und Mailingliste unterschiedlich sein bzw. müssen bei mehreren identische Listen unterschiedlich sein! Des Weiteren ist der Pfad zur Mailman Installation anzupassen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
&lt;br /&gt;
Administriert werden Listen über http://lists.example.com/admin/&amp;lt;listenname&amp;gt; und entweder dem Listenpasswort oder dem Site-Passwort.&lt;br /&gt;
&lt;br /&gt;
Als erstes sollte man die Liste &amp;quot;mailman&amp;quot; selber abbonieren. (http://lists.example.com/admin/mailman)&lt;br /&gt;
&lt;br /&gt;
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Feintuning == &lt;br /&gt;
&lt;br /&gt;
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...&lt;br /&gt;
&lt;br /&gt;
Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)&lt;br /&gt;
&lt;br /&gt;
Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert&#039;s. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!&lt;br /&gt;
&lt;br /&gt;
*  ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, falls sie an andere Stelle kopiert worden sind.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/messages löschen.&lt;br /&gt;
* Die nicht benötigten Sprachen in ~/mailman/templates löschen (bis auf englisch).&lt;br /&gt;
* ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.&lt;br /&gt;
* Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:&lt;br /&gt;
* in ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:&lt;br /&gt;
&lt;br /&gt;
 # In a normal interactive Python environment, the japanese.pth and korean.pth&lt;br /&gt;
 # files would be imported automatically.  But because we inhibit the importing&lt;br /&gt;
 # of the site module, we need to be explicit about importing these codecs.&lt;br /&gt;
 if not jaok:&lt;br /&gt;
     import japanese&lt;br /&gt;
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean&lt;br /&gt;
 # codecs installed, however leave the first import in there in case an upgrade&lt;br /&gt;
 # changes this.&lt;br /&gt;
 if not kook:&lt;br /&gt;
     import korean&lt;br /&gt;
     import korean.aliases&lt;br /&gt;
&lt;br /&gt;
auskommentieren.&lt;br /&gt;
&lt;br /&gt;
Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.&lt;br /&gt;
   &lt;br /&gt;
Man kann auch noch die Debug-Informationen aus den binaries strippen:&lt;br /&gt;
&lt;br /&gt;
 strip ~/mailman/mail/mailman&lt;br /&gt;
 strip ~/mailman/cgi-bin/*&lt;br /&gt;
&lt;br /&gt;
Falls die CGIs nicht gesymlinkt wurden:&lt;br /&gt;
&lt;br /&gt;
 strip ~/doms/lists.example.com/cgi/mailman/*&lt;br /&gt;
&lt;br /&gt;
== Multidomainfähigkeit ==&lt;br /&gt;
&lt;br /&gt;
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung ===&lt;br /&gt;
&lt;br /&gt;
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:&lt;br /&gt;
&lt;br /&gt;
 ~$ mailman/bin/newlist listenname@lists.example.com&lt;br /&gt;
&lt;br /&gt;
Es ist ggf. wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)&lt;br /&gt;
&lt;br /&gt;
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:&lt;br /&gt;
&lt;br /&gt;
Also z.B.&lt;br /&gt;
 DEFAULT_URL_HOST = &#039;www.example.com&#039;&lt;br /&gt;
 DEFAULT_EMAIL_HOST = &#039;lists.example.com&#039;&lt;br /&gt;
 add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
 add_virtualhost(&#039;www.zoopnet.de&#039;, &#039;lists.zoopnet.de&#039;)&lt;br /&gt;
&lt;br /&gt;
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind.&lt;br /&gt;
Alle weiteren add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. lists.zoopnet.de) zu.&lt;br /&gt;
&lt;br /&gt;
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost(&#039;www.example.org&#039;), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Prinzipiell war&#039;s das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&lt;br /&gt;
Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tips und Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== URL Änderungen ===&lt;br /&gt;
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt.&lt;br /&gt;
Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:&lt;br /&gt;
 ~/mailman/bin/withlist -l -r fix_url &amp;lt;Listen_Name&amp;gt; -v -u &amp;lt;Neue_Url&amp;gt;&lt;br /&gt;
&amp;lt;Listen_Name&amp;gt; steht für die Mailingliste, die bearbeitet werden soll. &amp;lt;Neue_Url&amp;gt; für die neue URL/Webadresse des Webinterfaces.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Cron-Jobs zur Mailinglisten Verwaltung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt; In Arbeit &amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
&lt;br /&gt;
Lösung zur installation als Domainadmin statt Paketadmin:&lt;br /&gt;
https://lists.hostsharing.net/archiv/support/2009-June/019414.html&lt;br /&gt;
&lt;br /&gt;
Ältere Anleitung für Installation als Domain-Admin: &amp;lt;http://lists.hostsharing.net/archiv/support/2005-January/012426.html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laufenlassen mit event:&lt;br /&gt;
Download und Doku auf &amp;lt;http://al000.hostsharing.net/mailman/mmhs/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Mutter der Mailman-Installations-Doku&amp;quot; &amp;lt;http://al000.hostsharing.net/mailman/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Kleine Tools&amp;quot; auf http://hs.andreasloesch.de, wobei das &#039;pac-mm-install&#039; wahrscheinlich nicht aktuell (genug) ist&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Diskussion:MySQL&amp;diff=2767</id>
		<title>Diskussion:MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Diskussion:MySQL&amp;diff=2767"/>
		<updated>2010-10-25T11:56:25Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Unverständlicher Satz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unverständlicher Satz ==&lt;br /&gt;
Im Abschnitt &amp;quot;Paketadmin&amp;quot; steht, &amp;quot;Wir richten den User mit Datenbanken ein, weil das am einfachsten ist.&amp;quot; Wer ist wir? Welchen User? Was ist mit &amp;quot;mit&amp;quot; gemeint: &amp;quot;mit Hilfe von&amp;quot;, oder &amp;quot;gleichzeitig mit&amp;quot;, oder was?&lt;br /&gt;
[[Benutzer:Apc00|Apc00]] 11:46, 25. Okt. 2010 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Wir = Du der Benutzer und Leser des Artikels&lt;br /&gt;
&lt;br /&gt;
mit = der Seite die sich hinter dem Link Datenbank verbirgt&lt;br /&gt;
&lt;br /&gt;
So verstehe ich das&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Chg00-hsdoku|Christian Günter]] 12:17, 25. Okt. 2010 (CEST)&lt;br /&gt;
:Ich kann dir leider nicht folgen. Wie würdest du dann einen allgemein verständlichen Satz daraus machen? Um welchen Link soll es sich jetzt handeln? Bisher war in dem Artikel kein Hinweis auf hsadmin, falls du das meinst -- und hsadmin hat verschiedene Links für User und für Datenbanken. Vorschlag, um nicht länger zu nerven: Wie wär&#039;s, wenn ich den Satz einfach streiche?&lt;br /&gt;
:[[Benutzer:Apc00|Tony Crawford (apc00)]] 13:50, 25. Okt. 2010 (CEST)&lt;br /&gt;
&lt;br /&gt;
:: Ach so, es soll heißen: &amp;quot;Um User einzurichten, siehe die Anleitung auf der Seite [[Datenbanken]].&amp;quot; Jetzt verstehe ich.&lt;br /&gt;
&lt;br /&gt;
:: In dem Fall gibt&#039;s eine große Überschneidung zwischen den zwei Seiten. Da braucht&#039;s eine redaktionelle Entscheidung über die Gliederung, die ich mir nicht zutraue. Danke für die Lesehilfe.&lt;br /&gt;
&lt;br /&gt;
::--[[Benutzer:Apc00|Tony Crawford (apc00)]] 13:56, 25. Okt. 2010 (CEST)&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Diskussion:MySQL&amp;diff=2766</id>
		<title>Diskussion:MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Diskussion:MySQL&amp;diff=2766"/>
		<updated>2010-10-25T11:50:53Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Unverständlicher Satz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unverständlicher Satz ==&lt;br /&gt;
Im Abschnitt &amp;quot;Paketadmin&amp;quot; steht, &amp;quot;Wir richten den User mit Datenbanken ein, weil das am einfachsten ist.&amp;quot; Wer ist wir? Welchen User? Was ist mit &amp;quot;mit&amp;quot; gemeint: &amp;quot;mit Hilfe von&amp;quot;, oder &amp;quot;gleichzeitig mit&amp;quot;, oder was?&lt;br /&gt;
[[Benutzer:Apc00|Apc00]] 11:46, 25. Okt. 2010 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Wir = Du der Benutzer und Leser des Artikels&lt;br /&gt;
&lt;br /&gt;
mit = der Seite die sich hinter dem Link Datenbank verbirgt&lt;br /&gt;
&lt;br /&gt;
So verstehe ich das&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Chg00-hsdoku|Christian Günter]] 12:17, 25. Okt. 2010 (CEST)&lt;br /&gt;
:Ich kann dir leider nicht folgen. Wie würdest du dann einen allgemein verständlichen Satz daraus machen? Um welchen Link soll es sich jetzt handeln? Bisher war in dem Artikel kein Hinweis auf hsadmin, falls du das meinst -- und hsadmin hat verschiedene Links für User und für Datenbanken. Vorschlag, um nicht länger zu nerven: Wie wär&#039;s, wenn ich den Satz einfach streiche?&lt;br /&gt;
[[Benutzer:Apc00|Tony Crawford (apc00)]] 13:50, 25. Okt. 2010 (CEST)&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Diskussion:MySQL&amp;diff=2765</id>
		<title>Diskussion:MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Diskussion:MySQL&amp;diff=2765"/>
		<updated>2010-10-25T11:48:26Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Unverständlicher Satz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unverständlicher Satz ==&lt;br /&gt;
Im Abschnitt &amp;quot;Paketadmin&amp;quot; steht, &amp;quot;Wir richten den User mit Datenbanken ein, weil das am einfachsten ist.&amp;quot; Wer ist wir? Welchen User? Was ist mit &amp;quot;mit&amp;quot; gemeint: &amp;quot;mit Hilfe von&amp;quot;, oder &amp;quot;gleichzeitig mit&amp;quot;, oder was?&lt;br /&gt;
[[Benutzer:Apc00|Apc00]] 11:46, 25. Okt. 2010 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Wir = Du der Benutzer und Leser des Artikels&lt;br /&gt;
&lt;br /&gt;
mit = der Seite die sich hinter dem Link Datenbank verbirgt&lt;br /&gt;
&lt;br /&gt;
So verstehe ich das&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Chg00-hsdoku|Christian Günter]] 12:17, 25. Okt. 2010 (CEST)&lt;br /&gt;
:Ich kann dir leider nicht folgen. Wie würdest du dann einen allgemein verständlichen Satz daraus machen? Um welchen Link soll es sich jetzt handeln? Bisher war in dem Artikel kein Hinweis auf hsadmin, falls du das meinst -- und hsadmin hat verschiedene Links für User und für Datenbanken. Vorschlag, um nicht länger zu nerven: Wie wär&#039;s, wenn ich den Satz einfach streiche?&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=2763</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=2763"/>
		<updated>2010-10-25T09:57:57Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* MySQL-User */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;code&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/code&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist an sich nicht begrenzt. Der damit verbrauchte Speicherplatz geht in aber die Quota des Paketes mit ein, so dass hierüber eine indirekte Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;code&amp;gt;xyz00_datenbank&amp;lt;/code&amp;gt;.&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Benutzernamen, die MySQL erkennt, stehen in keiner Beziehung zu den Unix-Benutzernamen der Hostsharing-Systeme, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Die Ausnahme ist der Benutzername des Paketadmins: der Name des MySQL-Administrators im Paket entspricht dem Benutzernamen des Paketadmins (z. B. &#039;&#039;&#039;xyz00&#039;&#039;&#039;). Das ist eine Konvention, die wir gewählt haben, damit der Paket-Admin seinen Namen für den MySQL-Zugang nicht vergessen kann.&lt;br /&gt;
&lt;br /&gt;
Weitere MySQL-Usernamen können aus dem Paket-Admin-Namen, einem Unterstrich, und einer freien Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Domain-Admin-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket MySQL benutzen kann, muss man als ersten Schritt einen Datenbank-Administrator einrichten. Das ist zwingend notwendig. Es kann ein MySQL-User mit dem Kürzel des Paketadmins (&amp;lt;code&amp;gt;xyz00&amp;lt;/code&amp;gt;) sein. Es können allerdings auch beliebing viele Datenbank-Administratoren nach dem Namensschema &amp;lt;code&amp;gt;xyz00_...&amp;lt;/code&amp;gt; angelegt werden. Wir richten den User mit [[Datenbanken]] ein, weil das am einfachsten ist.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang des Paketadmins nur für administrative Zwecke zu benutzen. Schließlich will man nicht immer den mächtigen Account des Paketadmins in seinen Skripten verwenden. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Rechte an bestimmten Datenbanken oder zur Ausführung bestimmter Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;code&amp;gt;mysql&amp;lt;/code&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;code&amp;gt;xyz00&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;xyz00_otto&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;xyz00_anna&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;xyz00_db_fuer_hans&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;code&amp;gt;GRANT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;code&amp;gt;GRANT ALL&amp;lt;/code&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;code&amp;gt;xyz00_otto&amp;lt;/code&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=2762</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=2762"/>
		<updated>2010-10-25T09:56:20Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* MySQL-User */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
Wir haben pro Host einen einzelnen MySQL Datenbankserver. Der Zugriff erfolgt über den Hostnamen &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; und den Port 3306 (default). Außerdem kann der Server über den Socket &amp;lt;code&amp;gt;/var/run/mysqld/mysqld.sock&amp;lt;/code&amp;gt; erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der in Hostsharing Dynamic-Web-Paketen verwendbaren MySQL-Datenbanken ist an sich nicht begrenzt. Der damit verbrauchte Speicherplatz geht in aber die Quota des Paketes mit ein, so dass hierüber eine indirekte Begrenzung vorliegt. Alle Datenbanken eines Paketes müssen mit dem Paketnamen und einem Underscore beginnen, also z.B. &amp;lt;code&amp;gt;xyz00_datenbank&amp;lt;/code&amp;gt;.&lt;br /&gt;
== MySQL-User ==&lt;br /&gt;
&lt;br /&gt;
{{Textkasten|gruen||Die Benutzernamen, die MySQL erkennt, stehen in keiner Beziehung zu den Unix-Benutzernamen der Hostsharing-Systeme, also den Namen, die für den [[shell]]-Zugang verwendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Die Ausnahme ist der Benutzername des Paketadmins: der Name des MySQL-Administrators im Paket entspricht dem Benutzernamen des Paketadmins (xyz00). Das ist eine Konvention, die wir gewählt haben, damit der Paket-Admin seinen Namen für den MySQL-Zugang nicht vergessen kann.&lt;br /&gt;
&lt;br /&gt;
Weitere MySQL-Usernamen können aus dem Paket-Admin-Namen, einem Unterstrich, und eine freie Zeichenfolge gebildet werden. Also kann der Paketadmin &#039;&#039;&#039;xyz00&#039;&#039;&#039; weitere User der Form &#039;&#039;&#039;xyz00_abc&#039;&#039;&#039; einrichten. Beachte die Differenz zu Domain-Admin-Namen, die nicht mit Unterstrich, sondern mit Bindestrich gebildet werden (&#039;&#039;&#039;xyz00&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;xyz00-abc&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Paketadmin ===&lt;br /&gt;
&lt;br /&gt;
Der Paketadmin hat mit seinem Account sehr weitgehende administrative Rechte in MySQL und sollte dementsprechend mit Umsicht genutzt werden. Er kann mit seinem Account im Administrationswerkzeug [[hsadmin]] unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Datenbanken anlegen und löschen&lt;br /&gt;
* Datenbank-Benutzer anlegen und löschen&lt;br /&gt;
&lt;br /&gt;
Bevor man in seinem Paket MySQL benutzen kann, muss man als ersten Schritt einen Datenbank-Administrator einrichten. Das ist zwingend notwendig. Es kann ein MySQL-User mit dem Kürzel des Paketadmins (&amp;lt;code&amp;gt;xyz00&amp;lt;/code&amp;gt;) sein. Es können allerdings auch beliebing viele Datenbank-Administratoren nach dem Namensschema &amp;lt;code&amp;gt;xyz00_...&amp;lt;/code&amp;gt; angelegt werden. Wir richten den User mit [[Datenbanken]] ein, weil das am einfachsten ist.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Benutzer anlegen ===&lt;br /&gt;
&lt;br /&gt;
Du kannst Dir weitere Benutzer für MySQL anlegen. Wir empfehlen Dir das ausdrücklich, weil es eine gute Idee ist, den mächtigen Zugang des Paketadmins nur für administrative Zwecke zu benutzen. Schließlich will man nicht immer den mächtigen Account des Paketadmins in seinen Skripten verwenden. Für einzelne Aufgaben kannst Du verschiedene Benutzer anlegen, denen Du natürlich auch verschiedene Rechte geben kannst, z.B. nur Rechte an bestimmten Datenbanken oder zur Ausführung bestimmter Kommandos.&lt;br /&gt;
&lt;br /&gt;
Wir legen noch einen User an:&lt;br /&gt;
&lt;br /&gt;
siehe [[Datenbanken]]&lt;br /&gt;
&lt;br /&gt;
=== Der MySQL-Monitor ===&lt;br /&gt;
&lt;br /&gt;
Mit den neu angelegten User-Accounts können wir nun in den MySQL-Monitor wechseln, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird mit dem Befehl &amp;lt;code&amp;gt;mysql&amp;lt;/code&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen - auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00 -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.&lt;br /&gt;
=== Datenbank anlegen === &lt;br /&gt;
&lt;br /&gt;
geht nun auch mit [[hsadmin]] siehe [[Datenbanken]].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;code&amp;gt;xyz00&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;xyz00_otto&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;xyz00_anna&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;xyz00_db_fuer_hans&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Paketadmin, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;code&amp;gt;GRANT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;code&amp;gt;GRANT ALL&amp;lt;/code&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;code&amp;gt;xyz00_otto&amp;lt;/code&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Diskussion:MySQL&amp;diff=2761</id>
		<title>Diskussion:MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Diskussion:MySQL&amp;diff=2761"/>
		<updated>2010-10-25T09:46:23Z</updated>

		<summary type="html">&lt;p&gt;Apc00: Die Seite wurde neu angelegt: „== Unverständlicher Satz == Im Abschnitt &amp;quot;Paketadmin&amp;quot; steht, &amp;quot;Wir richten den User mit Datenbanken ein, weil das am einfachsten ist.&amp;quot; Wer ist wir? Welchen User? …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unverständlicher Satz ==&lt;br /&gt;
Im Abschnitt &amp;quot;Paketadmin&amp;quot; steht, &amp;quot;Wir richten den User mit Datenbanken ein, weil das am einfachsten ist.&amp;quot; Wer ist wir? Welchen User? Was ist mit &amp;quot;mit&amp;quot; gemeint: &amp;quot;mit Hilfe von&amp;quot;, oder &amp;quot;gleichzeitig mit&amp;quot;, oder was?&lt;br /&gt;
[[Benutzer:Apc00|Apc00]] 11:46, 25. Okt. 2010 (CEST)&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Procmail&amp;diff=2716</id>
		<title>Procmail</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Procmail&amp;diff=2716"/>
		<updated>2010-07-24T13:07:43Z</updated>

		<summary type="html">&lt;p&gt;Apc00: /* Abwesenheitsbenachrichtigung (vacation) */ Angabe des Adressaten im Rezept mit ^TO_... ersetzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Procmail ist ein mächtiger Filter, der für viele komplexe Aufgaben verwendet werden kann. So sind z.B. variable Weiterleitungen und das einbinden eines Spamfilters machbar. Mehr dazu unter www.procmail.org und auf dem Server in den Manpages zu procmail, procmailrc und procmailex.&lt;br /&gt;
&lt;br /&gt;
=== Eingehende Emails an Procmail weiterleiten ===&lt;br /&gt;
&lt;br /&gt;
Zur Nutzung von procmail wird im Homedirectory des Users eine Datei .forward angelegt, die nur aus einer Zeile besteht:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;|/usr/bin/procmail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Damit werden alle Mails an das Programm procmail übergeben und die Auslieferung kann nun über die Datei ~/.procmailrc konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== Procmail konfigurieren ===&lt;br /&gt;
&lt;br /&gt;
Das nachfolgende Beispiel zeigt wie ein [[Spamfilter]] eingebunden werden kann, und Emails automatisch in IMAP-Folder (Verzeichnisse) einsortiert werden können.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnisse anlegen ====&lt;br /&gt;
&lt;br /&gt;
Die angesprochenen Emailverzeichnisse sollten vorher angelegt worden sein, falls sie noch nicht existieren ist dies z.B. mit dem Befehle maildirmake möglich:&lt;br /&gt;
&lt;br /&gt;
 maildirmake Maildir&lt;br /&gt;
 maildirmake -f Trash Maildir&lt;br /&gt;
 maildirmake -f Spam Maildir&lt;br /&gt;
 maildirmake -f Hostsharing Maildir&lt;br /&gt;
&lt;br /&gt;
Alternativ können die Verzeichnisse auch über die Webmail-Oberfläche anlgelegt werden. Es ist übrigens korrekt, dass die Folder beim Anlegen ohne einen führenden Punkt im Namen erstellt werden, in der .procmailrc aber mit Punkt angegeben werden.&lt;br /&gt;
&lt;br /&gt;
==== .procmailrc ====&lt;br /&gt;
&lt;br /&gt;
Eine beispielhafte .procmailrc:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Logging abstellen&lt;br /&gt;
COMSAT=no&lt;br /&gt;
LOGABSTRACT=no&lt;br /&gt;
VERBOSE=no&lt;br /&gt;
LOGFILE=procmail.log&lt;br /&gt;
&lt;br /&gt;
## Spamassassin für alle Mails aufrufen...&lt;br /&gt;
# Hier wird der systemweite Spamassassin-Daemon benutzt.&lt;br /&gt;
:0fw&lt;br /&gt;
| /usr/bin/spamc -U /var/run/spamd&lt;br /&gt;
## ...und Spam in den Spam Folder aussortieren&lt;br /&gt;
:0&lt;br /&gt;
* ^X-Spam-Flag: YES&lt;br /&gt;
Maildir/.Spam/&lt;br /&gt;
&lt;br /&gt;
## Bsp. Mailinglisten von Hostsharing in eine extra Box&lt;br /&gt;
#:0&lt;br /&gt;
#* ^TO_(support|technik|website)@hostsharing\.net&lt;br /&gt;
#Maildir/.Hostsharing/&lt;br /&gt;
&lt;br /&gt;
# Alle nicht ausgefilterten Mails landen in der normalen Mailbox&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Abwesenheitsbenachrichtigung (vacation) ====&lt;br /&gt;
&lt;br /&gt;
Zunächst im Home-Ordner eine Datei vacation.msg erstellen, deren Text als Nachricht verschickt werden soll.&lt;br /&gt;
&lt;br /&gt;
Dann in die .procmailrc folgende Zeilen einfügen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SHELL=/bin/sh&lt;br /&gt;
FORMAIL=/usr/bin/formail&lt;br /&gt;
SENDMAIL=/usr/sbin/sendmail&lt;br /&gt;
:0 Whc: vacation.lock&lt;br /&gt;
* ^TO_myself@example.com&lt;br /&gt;
# Nur E-Mails, die an meine Adresse adressiert sind&lt;br /&gt;
* !^FROM_DAEMON&lt;br /&gt;
# Daemons (Mailinglisten) ausschließen&lt;br /&gt;
* !^X-Loop: myself@example.com&lt;br /&gt;
# Loop vermeiden: eigene E-Mail ausschließen&lt;br /&gt;
| formail -rD 8192 vacation.cache&lt;br /&gt;
# Adresse des Senders im Cache speichern&lt;br /&gt;
:0 ehc&lt;br /&gt;
# e: letztes recipe trifft nicht zu (Adresse noch nicht im Cache vorhanden)&lt;br /&gt;
| ($FORMAIL -rA &amp;quot;Precedence: junk&amp;quot; -A &amp;quot;X-Loop: myself@example.com&amp;quot; ; /bin/cat vacation.msg ) | $SENDMAIL -oi -t -f myself@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun wird eine E-Mail mit dem Inhalt der Datei vacation.msg und dem Absender myself@example.com an die Absender empfangener Emails geschickt. Allerdings nur, wenn die Adresse noch nicht in der vacation.cache-Datei vorhanden war. Damit wird vermieden, dass ein Absender immer wieder die Abwesenheitsnachricht erhält.&lt;br /&gt;
&lt;br /&gt;
=== Links zu weiteren Procmail Beispielen und Tipps ===&lt;br /&gt;
&lt;br /&gt;
http://pm-doc.sourceforge.net/pm-tips.html&lt;br /&gt;
&lt;br /&gt;
http://lipas.uwasa.fi/~ts/info/proctips.html (Timo&#039;s procmail tips and recipes)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Apc00</name></author>
	</entry>
</feed>