<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bwt.com.de/index.php?action=history&amp;feed=atom&amp;title=Self-Hosted_E-Mail</id>
	<title>Self-Hosted E-Mail - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bwt.com.de/index.php?action=history&amp;feed=atom&amp;title=Self-Hosted_E-Mail"/>
	<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;action=history"/>
	<updated>2026-05-13T21:09:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=643&amp;oldid=prev</id>
		<title>BrainwreckedTech: /* Rainloop */  Disable wiki markup on URL</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=643&amp;oldid=prev"/>
		<updated>2022-06-20T17:57:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Rainloop: &lt;/span&gt;  Disable wiki markup on URL&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:57, 20 June 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l551&quot;&gt;Line 551:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 551:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Download Rainloop&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Download Rainloop&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{bc|&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{bc|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;nowiki&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;sudo cd /srv/http/&amp;lt;domain&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;sudo cd /srv/http/&amp;lt;domain&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;sudo wget https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;sudo wget https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/nowiki&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key MW_BWT:diff:1.41:old-370:rev-643:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>BrainwreckedTech</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=370&amp;oldid=prev</id>
		<title>BrainwreckedTech: Made TOC float left</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=370&amp;oldid=prev"/>
		<updated>2019-12-11T08:13:30Z</updated>

		<summary type="html">&lt;p&gt;Made TOC float left&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:13, 11 December 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&quot;float:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;right&lt;/del&gt;; margin-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;left&lt;/del&gt;:0.5em; margin-bottom:0.5em;&quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&quot;float:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;left&lt;/ins&gt;; margin-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;right&lt;/ins&gt;:0.5em; margin-bottom:0.5em;&quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Setting up your own e-mail service from scratch can be a time-consuming task, but it also allows the ultimate control over your e-mail at no additional cost.  Create any account(s) you want from any domain you own, and relieve yourself of the snooping from free e-mail service providers.  All with the help of free software from Postfix, Dovecot, ISPmail (administer addresses), and Rainloop (web mail).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Setting up your own e-mail service from scratch can be a time-consuming task, but it also allows the ultimate control over your e-mail at no additional cost.  Create any account(s) you want from any domain you own, and relieve yourself of the snooping from free e-mail service providers.  All with the help of free software from Postfix, Dovecot, ISPmail (administer addresses), and Rainloop (web mail).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key MW_BWT:diff:1.41:old-324:rev-370:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>BrainwreckedTech</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=324&amp;oldid=prev</id>
		<title>BrainwreckedTech: /* Prerequisites */ Fixed spelling error</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=324&amp;oldid=prev"/>
		<updated>2019-12-07T22:18:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Prerequisites: &lt;/span&gt; Fixed spelling error&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:18, 7 December 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[:Category:Firewall|Firewall]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[:Category:Firewall|Firewall]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Make sure ports 25, 465, 587, 993, and 995 are open.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Make sure ports 25, 465, 587, 993, and 995 are open.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[:Category:Database|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Databse&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[:Category:Database|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Database&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Allows for the divorce of email addresses from UNIX/LDAP usernames.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Allows for the divorce of email addresses from UNIX/LDAP usernames.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[:Category:Web Server|Web Server]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[:Category:Web Server|Web Server]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key MW_BWT:diff:1.41:old-323:rev-324:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>BrainwreckedTech</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=323&amp;oldid=prev</id>
		<title>BrainwreckedTech: /* Prerequisites */ Generalized prerequisites</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=323&amp;oldid=prev"/>
		<updated>2019-12-07T22:17:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Prerequisites: &lt;/span&gt; Generalized prerequisites&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:17, 7 December 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Prerequisites =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Prerequisites =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Firewall&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:Category:Firewall|Firewall&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: Whether you use &lt;/del&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;IPTables&lt;/del&gt;]] &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;or another firewall, make &lt;/del&gt;sure ports 25, 465, 587, 993, and 995 are open.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: Make &lt;/ins&gt;sure ports 25, 465, 587, 993, and 995 are open.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;MariaDB&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:Category:Database|Databse&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Allows for the divorce of email addresses from UNIX/LDAP usernames.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Allows for the divorce of email addresses from UNIX/LDAP usernames.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nginx&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:Category:Web Server|Web Server&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: For web applications and Let&amp;#039;s Encrypt SSL certificates.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: For web applications and Let&amp;#039;s Encrypt SSL certificates.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[Let&amp;#039;s Encrypt]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[Let&amp;#039;s Encrypt]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key MW_BWT:diff:1.41:old-322:rev-323:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>BrainwreckedTech</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=322&amp;oldid=prev</id>
		<title>BrainwreckedTech: /* Required Packages */ Removed redis (moved to prerequisite)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=322&amp;oldid=prev"/>
		<updated>2019-12-07T20:42:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Required Packages: &lt;/span&gt; Removed redis (moved to prerequisite)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:42, 7 December 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l22&quot;&gt;Line 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 22:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These packages are needed to set up your own e-mail service.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These packages are needed to set up your own e-mail service.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{bc|pacman -Syu --needed dovecot pigeonhole postfix &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;redis &lt;/del&gt;rspamd swaks}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{bc|pacman -Syu --needed dovecot pigeonhole postfix rspamd swaks}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Postfix Configuration =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Postfix Configuration =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key MW_BWT:diff:1.41:old-321:rev-322:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>BrainwreckedTech</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=321&amp;oldid=prev</id>
		<title>BrainwreckedTech: /* Prerequisites */  Added Redis</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=321&amp;oldid=prev"/>
		<updated>2019-12-07T20:41:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Prerequisites: &lt;/span&gt;  Added Redis&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:41, 7 December 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l15&quot;&gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[Let&amp;#039;s Encrypt]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[Let&amp;#039;s Encrypt]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Allows the use of SSL-secured transmission instead of plaintext.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Allows the use of SSL-secured transmission instead of plaintext.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; [[Redis]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: Rspamd uses this to cache recently seen mail servers and spam scores.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Required Packages =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Required Packages =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key MW_BWT:diff:1.41:old-317:rev-321:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>BrainwreckedTech</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=317&amp;oldid=prev</id>
		<title>BrainwreckedTech: /* Prerequisites */ Removed ports 110 (non-secured POP3) and 143 (non-secured IMAP)</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=317&amp;oldid=prev"/>
		<updated>2019-12-07T04:12:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Prerequisites: &lt;/span&gt; Removed ports 110 (non-secured POP3) and 143 (non-secured IMAP)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:12, 7 December 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; Firewall&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; Firewall&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Whether you use [[IPTables]] or another firewall, make sure ports 25&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, 110, 143&lt;/del&gt;, 465, 587, 993, and 995 are open.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Whether you use [[IPTables]] or another firewall, make sure ports 25, 465, 587, 993, and 995 are open.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[MariaDB]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; [[MariaDB]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Allows for the divorce of email addresses from UNIX/LDAP usernames.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Allows for the divorce of email addresses from UNIX/LDAP usernames.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key MW_BWT:diff:1.41:old-315:rev-317:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>BrainwreckedTech</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=315&amp;oldid=prev</id>
		<title>BrainwreckedTech: Created oage</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwt.com.de/index.php?title=Self-Hosted_E-Mail&amp;diff=315&amp;oldid=prev"/>
		<updated>2019-12-07T02:49:27Z</updated>

		<summary type="html">&lt;p&gt;Created oage&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; margin-left:0.5em; margin-bottom:0.5em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting up your own e-mail service from scratch can be a time-consuming task, but it also allows the ultimate control over your e-mail at no additional cost.  Create any account(s) you want from any domain you own, and relieve yourself of the snooping from free e-mail service providers.  All with the help of free software from Postfix, Dovecot, ISPmail (administer addresses), and Rainloop (web mail).&lt;br /&gt;
&lt;br /&gt;
Do note that many, if not all, residential ISPs block port 25 to combat spam from any potentially botted customer PC on the ISP&amp;#039;s network.  SMTP by itself is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; a secure protocol &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;at all&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;.  As such, most SMTP servers are configured by default to reject unauthenticated plaintext requests to send mail from any IP that isn&amp;#039;t localhost.  The most common solution to this is to purchase Virtual Private Server (VPS) service, which can cost as little as US$3.00 per month.  Another solution would be to purchase a Virtual Private Network (VPN) service with dedicated IP address and PTR record.&lt;br /&gt;
&lt;br /&gt;
= Prerequisites =&lt;br /&gt;
&lt;br /&gt;
; Firewall&lt;br /&gt;
: Whether you use [[IPTables]] or another firewall, make sure ports 25, 110, 143, 465, 587, 993, and 995 are open.&lt;br /&gt;
; [[MariaDB]]&lt;br /&gt;
: Allows for the divorce of email addresses from UNIX/LDAP usernames.&lt;br /&gt;
; [[Nginx]]&lt;br /&gt;
: For web applications and Let&amp;#039;s Encrypt SSL certificates.&lt;br /&gt;
; [[Let&amp;#039;s Encrypt]]&lt;br /&gt;
: Allows the use of SSL-secured transmission instead of plaintext.&lt;br /&gt;
&lt;br /&gt;
= Required Packages =&lt;br /&gt;
&lt;br /&gt;
These packages are needed to set up your own e-mail service.&lt;br /&gt;
&lt;br /&gt;
{{bc|pacman -Syu --needed dovecot pigeonhole postfix redis rspamd swaks}}&lt;br /&gt;
&lt;br /&gt;
= Postfix Configuration =&lt;br /&gt;
&lt;br /&gt;
== Create MariaDB Databases for Postfix ==&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
CREATE DATABASE MAIL;&lt;br /&gt;
CREATE USER &amp;#039;mailuser&amp;#039;@&amp;#039;localhost&amp;#039; IDENTIFIED BY &amp;#039;&amp;lt;password&amp;gt;&amp;#039;;&lt;br /&gt;
CREATE USER &amp;#039;mailadmin&amp;#039;@&amp;#039;localhost&amp;#039; IDENTIFIED BY &amp;#039;&amp;lt;password&amp;gt;&amp;#039;;&lt;br /&gt;
GRANT ALL ON MAIL.* TO &amp;#039;mailadmin&amp;#039;@&amp;#039;localhost&amp;#039;;&lt;br /&gt;
GRANT SELECT ON MAIL.* TO &amp;#039;mailuser&amp;#039;@&amp;#039;localhost&amp;#039;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `MAIL`.`virtual_domains` (&lt;br /&gt;
`id` int(11) NOT NULL auto_increment,&lt;br /&gt;
`name` varchar(50) NOT NULL,&lt;br /&gt;
PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=InnoDB DEFAULT CHARSET=utf8;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `MAIL`.`virtual_users` (&lt;br /&gt;
`id` int(11) NOT NULL auto_increment,&lt;br /&gt;
`domain_id` int(11) NOT NULL,&lt;br /&gt;
`email` varchar(100) NOT NULL,&lt;br /&gt;
`password` varchar(150) NOT NULL,&lt;br /&gt;
PRIMARY KEY (`id`),&lt;br /&gt;
UNIQUE KEY `email` (`email`),&lt;br /&gt;
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE&lt;br /&gt;
) ENGINE=InnoDB DEFAULT CHARSET=utf8;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `MAIL`.`virtual_aliases` (&lt;br /&gt;
`id` int(11) NOT NULL auto_increment,&lt;br /&gt;
`domain_id` int(11) NOT NULL,&lt;br /&gt;
`source` varchar(100) NOT NULL,&lt;br /&gt;
`destination` varchar(100) NOT NULL,&lt;br /&gt;
PRIMARY KEY (`id`),&lt;br /&gt;
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE&lt;br /&gt;
) ENGINE=InnoDB DEFAULT CHARSET=utf8;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Configure Postfix to Use MariaDB ==&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/postfix/mysql-virtual-mailbox-domains.cf|2=&lt;br /&gt;
user = mailuser&lt;br /&gt;
password = &amp;lt;password&amp;gt;&lt;br /&gt;
hosts = unix:/run/mysqld/mysqld.sock&lt;br /&gt;
dbname = MAIL&lt;br /&gt;
query = SELECT 1 FROM virtual_domains WHERE name=&amp;#039;%s&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/postfix/mysql-virtual-mailbox-maps.cf|2=&lt;br /&gt;
user = mailuser&lt;br /&gt;
password = &amp;lt;password&amp;gt;&lt;br /&gt;
hosts = unix:/run/mysqld/mysqld.sock&lt;br /&gt;
dbname = MAIL&lt;br /&gt;
query = SELECT 1 FROM virtual_users WHERE email=&amp;#039;%s&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/postfix/mysql-virtual-alias-maps.cf|2=&lt;br /&gt;
user = mailuser&lt;br /&gt;
password = &amp;lt;password&amp;gt;&lt;br /&gt;
hosts = unix:/run/mysqld/mysqld.sock&lt;br /&gt;
dbname = MAIL&lt;br /&gt;
query = SELECT destination FROM virtual_aliases WHERE source=&amp;#039;%s&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/postfix/mysql-email2email.cf|2=&lt;br /&gt;
user = mailuser&lt;br /&gt;
password = &amp;lt;password&amp;gt;&lt;br /&gt;
hosts = unix:/run/mysqld/mysqld.sock&lt;br /&gt;
dbname = MAIL&lt;br /&gt;
query = SELECT email FROM virtual_users WHERE email=&amp;#039;%s&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo postconf virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf&lt;br /&gt;
sudo postconf virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf&lt;br /&gt;
sudo postconf virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf&lt;br /&gt;
sudo chgrp postfix /etc/postfix/mysql-*.cf&lt;br /&gt;
sudo chmod 640 /etc/postfix/mysql-*.cf&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Configure Postfix for E-mail Filtering ==&lt;br /&gt;
&lt;br /&gt;
Add the following lines to the end of the {{ic|/etc/postfix/master.cf}} file:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/postfix/master.cf|2=&lt;br /&gt;
...&lt;br /&gt;
submission inet n - - - - smtpd&lt;br /&gt;
 -o syslog_name=postfix/submission&lt;br /&gt;
 -o smtpd_tls_security_level=encrypt&lt;br /&gt;
 -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
 -o smtpd_sasl_type=dovecot&lt;br /&gt;
 -o smtpd_sasl_path=private/auth&lt;br /&gt;
 -o smtpd_sasl_security_options=noanonymous&lt;br /&gt;
 -o smtpd_sender_login_maps=mysql:/etc/postfix/mysql-email2email.cf&lt;br /&gt;
 -o smtpd_sender_restrictions=reject_sender_login_mismatch&lt;br /&gt;
 -o smtpd_sasl_local_domain=$myhostname&lt;br /&gt;
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
 -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject&lt;br /&gt;
...&lt;br /&gt;
dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo postconf virtual_transport=lmtp:unix:private/dovecot-lmtp&lt;br /&gt;
sudo postconf smtpd_sasl_type=dovecot&lt;br /&gt;
sudo postconf smtpd_sasl_path=private/auth&lt;br /&gt;
sudo postconf smtpd_sasl_auth_enable=yes&lt;br /&gt;
sudo postconf smtpd_tls_security_level=may&lt;br /&gt;
sudo postconf smtpd_tls_auth_only=yes&lt;br /&gt;
sudo postconf smtpd_tls_cert_file=/etc/letsencrypt/live/&amp;lt;domain&amp;gt;/fullchain.pem&lt;br /&gt;
sudo postconf smtpd_tls_key_file=/etc/letsencrypt/live/&amp;lt;domain&amp;gt;/privkey.pem&lt;br /&gt;
sudo postconf smtp_tls_security_level=may&lt;br /&gt;
sudo postconf smtpd_milters=inet:127.0.0.1:11332&lt;br /&gt;
sudo postconf non_smtpd_milters=inet:127.0.0.1:11332&lt;br /&gt;
sudo postconf milter_protocol=6&lt;br /&gt;
sudo postconf milter_mail_macros=&amp;quot;i {mail_addr} {client_addr} {client_name} {auth_authen}&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
= Dovecot Configuration =&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
sudo groupadd -g 5000 vmail&lt;br /&gt;
sudo useradd -g vmail -u 5000 vmail -d /srv/imap -m&lt;br /&gt;
sudo chown -R vmail:vmail /srv/mail&lt;br /&gt;
sudo cp /usr/share/doc/dovecot/example-config/dovecot.conf /etc/dovecot&lt;br /&gt;
sudo cp -r /usr/share/doc/dovecot/example-config/conf.d /etc/dovecot&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/dovecot.conf|2=&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Protocols we want to be serving.&lt;br /&gt;
# Don&amp;#039;t include submission -- postfix does that.&lt;br /&gt;
protocols = imap pop3 lmtp sieve&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
# Add these lines to the end of the file&lt;br /&gt;
# Or just before the include blocks&lt;br /&gt;
&lt;br /&gt;
service auth {&lt;br /&gt;
&lt;br /&gt;
    unix_listener auth-client {&lt;br /&gt;
        group = postfix&lt;br /&gt;
        mode = 0660&lt;br /&gt;
        user = postfix&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    unix_listener auth-master {&lt;br /&gt;
        group = vmail&lt;br /&gt;
        mode = 0660&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    user = root&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
service managesieve-login {&lt;br /&gt;
&lt;br /&gt;
  inet_listener sieve {&lt;br /&gt;
    port = 4190&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
service managesieve {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
protocol sieve {&lt;br /&gt;
    managesieve_max_line_length = 65536&lt;br /&gt;
    managesieve_implementation_string = dovecot&lt;br /&gt;
    log_path = /var/log/dovecot-sieve-errors.log&lt;br /&gt;
    info_log_path = /var/log/dovecot-sieve.log&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
plugin {&lt;br /&gt;
    sieve = ~/dovecot.sieve&lt;br /&gt;
    sieve_global_path = /etc/dovecot/sieve/default.sieve&lt;br /&gt;
    sieve_dir = ~/sieve&lt;br /&gt;
    sieve_global_dir = /etc/dovecot/sieve/global/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
lda_mailbox_autocreate = yes&lt;br /&gt;
lda_mailbox_autosubscribe = yes&lt;br /&gt;
&lt;br /&gt;
protocol lda {&lt;br /&gt;
    mail_plugins = $mail_plugins autocreate sieve quota&lt;br /&gt;
    postmaster_address = postmaster@mydomain.com&lt;br /&gt;
    hostname = mail.mydomain.com&lt;br /&gt;
    auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
    log_path = /var/log/dovecot-lda-errors.log&lt;br /&gt;
    info_log_path = /var/log/dovecot-lda.log&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
protocol lmtp {&lt;br /&gt;
    mail_plugins = $mail_plugins autocreate sieve quota&lt;br /&gt;
    log_path = /var/log/dovecot-lmtp-errors.log&lt;br /&gt;
    info_log_path = /var/log/dovecot-lmtp.log&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/10-auth.conf|2=&lt;br /&gt;
...&lt;br /&gt;
#!include auth-system.conf.ext&lt;br /&gt;
!include auth-sql.conf.ext&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/auth-sql.conf.ext|2=&lt;br /&gt;
...&lt;br /&gt;
#userdb {&lt;br /&gt;
#  driver = sql&lt;br /&gt;
#  args = /etc/dovecot/dovecot-sql.conf.ext&lt;br /&gt;
#}&lt;br /&gt;
...&lt;br /&gt;
userdb {&lt;br /&gt;
  driver = static&lt;br /&gt;
  args = uid=vmail gid=vmail home=/srv/mail/%n@%d&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/10-mail.conf|2=&lt;br /&gt;
...&lt;br /&gt;
mail_location = maildir:/srv/mail/%n@%d/Maildir&lt;br /&gt;
...&lt;br /&gt;
namespace inbox {&lt;br /&gt;
...&lt;br /&gt;
  separator = .&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/10-master.conf|2=&lt;br /&gt;
...&lt;br /&gt;
service lmtp {&lt;br /&gt;
  unix_listener /var/spool/postfix/private/dovecot-lmtp {&lt;br /&gt;
    group = postfix&lt;br /&gt;
    mode = 0600&lt;br /&gt;
    user = postfix&lt;br /&gt;
  }&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
service auth {&lt;br /&gt;
...&lt;br /&gt;
  # Postfix smtp-auth&lt;br /&gt;
  unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
    mode = 0660&lt;br /&gt;
    user = postfix&lt;br /&gt;
    group = postfix&lt;br /&gt;
  }&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/10-ssl.conf|2=&lt;br /&gt;
...&lt;br /&gt;
ssl = yes&lt;br /&gt;
...&lt;br /&gt;
ssl_cert = &amp;lt;/etc/letsencrypt/live/&amp;lt;domain&amp;gt;/fullchain.pem&lt;br /&gt;
ssl_key = &amp;lt;/etc/letsencrypt/live/&amp;lt;domain&amp;gt;/privkey.pem&lt;br /&gt;
...&lt;br /&gt;
ssl_ca = &amp;lt;/etc/letsencrypt/live/&amp;lt;domain&amp;gt;/chain.pem&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/15-mailboxes.conf|2=&lt;br /&gt;
...&lt;br /&gt;
mailbox INBOX.Drafts {&lt;br /&gt;
  special_use = \Drafts&lt;br /&gt;
  auto = subscribe&lt;br /&gt;
}&lt;br /&gt;
mailbox INBOX.Junk {&lt;br /&gt;
  special_use = \Junk&lt;br /&gt;
  auto = subscribe&lt;br /&gt;
  autoexpunge = 30d&lt;br /&gt;
}&lt;br /&gt;
mailbox INBOX.Trash {&lt;br /&gt;
  special_use = \Trash&lt;br /&gt;
  auto = subscribe&lt;br /&gt;
  autoexpunge = 30d&lt;br /&gt;
}&lt;br /&gt;
mailbox INBOX.Sent {&lt;br /&gt;
  special_use = \Sent&lt;br /&gt;
  auto = subscribe&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/20-imap.conf|2=&lt;br /&gt;
...&lt;br /&gt;
protocol imap {&lt;br /&gt;
  # Space separated list of plugins to load (default is global mail_plugins).&lt;br /&gt;
  mail_plugins = $mail_plugins imap_sieve&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/20-lmtp.conf|2=&lt;br /&gt;
...&lt;br /&gt;
protocol lmtp {&lt;br /&gt;
  # Space separated list of plugins to load (default is global mail_plugins).&lt;br /&gt;
  mail_plugins = $mail_plugins sieve&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/conf.d/90-sieve.conf|2=&lt;br /&gt;
...&lt;br /&gt;
sieve_after = /etc/dovecot/sieve-after&lt;br /&gt;
...&lt;br /&gt;
sieve_plugins = sieve_imapsieve sieve_extprograms&lt;br /&gt;
...&lt;br /&gt;
# From elsewhere to Junk folder&lt;br /&gt;
imapsieve_mailbox1_name = Junk&lt;br /&gt;
imapsieve_mailbox1_causes = COPY&lt;br /&gt;
imapsieve_mailbox1_before = file:/etc/dovecot/sieve/learn-spam.sieve&lt;br /&gt;
&lt;br /&gt;
# From Junk folder to elsewhere&lt;br /&gt;
imapsieve_mailbox2_name = *&lt;br /&gt;
imapsieve_mailbox2_from = Junk&lt;br /&gt;
imapsieve_mailbox2_causes = COPY&lt;br /&gt;
imapsieve_mailbox2_before = file:/etc/dovecot/sieve/learn-ham.sieve&lt;br /&gt;
&lt;br /&gt;
sieve_pipe_bin_dir = /etc/dovecot/sieve&lt;br /&gt;
sieve_global_extensions = +vnd.dovecot.pipe&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;sudo mkdir /etc/dovecot/sieve{-after,}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/sieve-after/spam-to-folder.sieve|2=&lt;br /&gt;
require [&amp;quot;fileinto&amp;quot;,&amp;quot;mailbox&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
if header :contains &amp;quot;X-Spam&amp;quot; &amp;quot;Yes&amp;quot; {&lt;br /&gt;
 fileinto :create &amp;quot;INBOX.Junk&amp;quot;;&lt;br /&gt;
 stop;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/sieve/learn-spam.sieve|2=&lt;br /&gt;
require [&amp;quot;vnd.dovecot.pipe&amp;quot;, &amp;quot;copy&amp;quot;, &amp;quot;imapsieve&amp;quot;];&lt;br /&gt;
pipe :copy &amp;quot;rspamd-learn-spam.sh&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/sieve/learn-ham.sieve|2=&lt;br /&gt;
require [&amp;quot;vnd.dovecot.pipe&amp;quot;, &amp;quot;copy&amp;quot;, &amp;quot;imapsieve&amp;quot;];&lt;br /&gt;
pipe :copy &amp;quot;rspamd-learn-ham.sh&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/dovecot-sql.conf.ext|2=&lt;br /&gt;
driver = mysql&lt;br /&gt;
connect = host=/run/mysqld/mysqld.sock dbname=MAIL user=mailuser password=&amp;lt;password&amp;gt;&lt;br /&gt;
default_pass_scheme = SHA256-CRYPT&lt;br /&gt;
password_query = SELECT email as user, password FROM virtual_users WHERE email=&amp;#039;%u&amp;#039;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/sieve/rspamd-learn-spam.sh|2=&lt;br /&gt;
#!/usr/bin/env sh&lt;br /&gt;
exec /usr/bin/rspamc learn_spam&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dovecot/sieve/rspamd-learn-ham.sh|2=&lt;br /&gt;
#!/usr/bin/env sh&lt;br /&gt;
exec /usr/bin/rspamc learn_ham&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo sievec /etc/dovecot/sieve-after/spam-to-folder.sieve&lt;br /&gt;
sudo sievec /etc/dovecot/sieve/learn-spam.sieve&lt;br /&gt;
sudo sievec /etc/dovecot/sieve/learn-ham.sieve&lt;br /&gt;
sudo touch /var/log/{dovecot-lda-errors.log,dovecot-lda.log}&lt;br /&gt;
sudo touch /var/log/{dovecot-sieve-errors.log,dovecot-sieve.log}&lt;br /&gt;
sudo touch /var/log/{dovecot-lmtp-errors.log,dovecot-lmtp.log}&lt;br /&gt;
sudo mkdir -p /etc/dovecot/sieve/global&lt;br /&gt;
sudo chown vmail: -R /etc/dovecot/sieve&lt;br /&gt;
sudo chown vmail:mail /var/log/dovecot-*&lt;br /&gt;
sudo chown root:root /etc/dovecot/dovecot-sql.conf.ext&lt;br /&gt;
sudo chmod 600 /etc/dovecot/dovecot-sql.conf.ext&lt;br /&gt;
sudo chmod 600 /etc/dovecot/sieve/learn-{spam,ham}.sieve&lt;br /&gt;
sudo chmod 700 /etc/dovecot/sieve/rspamd-learn-{spam,ham}.sh&lt;br /&gt;
sudo chown vmail:vmail /etc/dovecot/sieve/learn-{spam,ham}.sieve&lt;br /&gt;
sudo chown vmail:vmail /etc/dovecot/sieve/rspamd-learn-{spam,ham}.sh&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
= Rspamd Configuration =&lt;br /&gt;
&lt;br /&gt;
{{bc|sudo mkdir /etc/rspamd/conf.d}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/rspamd/override.d/milter_headers.conf|2=&lt;br /&gt;
extended_spam_headers = true;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/rspamd/override.d/classifier-bayes.conf|2=&lt;br /&gt;
autolearn = true;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
sudo mkdir /var/lib/rspamd/dkim&lt;br /&gt;
sudo chown _rspamd:_rspamd /var/lib/rspamd/dkim&lt;br /&gt;
sudo rspamadm dkim_keygen -d &amp;lt;domain&amp;gt; -s $(date +%Y%m%d)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/lib/rspamd/dkim/&amp;lt;domain&amp;gt;.YYYYMMDD.key|2=&lt;br /&gt;
&amp;lt;nowiki&amp;gt;-----BEGIN PRIVATE KEY-----&lt;br /&gt;
[base64 key]&lt;br /&gt;
-----END PRIVATE KEY-----&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The second part of the output of {{ic|rspamadm dkim_keygen}} can be directly pasted into a DNS zone if you are running your own server.  If you only have control of your domain name through a 3rd party:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Host !! Value&lt;br /&gt;
|-&lt;br /&gt;
| TXT || @ || &amp;lt;nowiki&amp;gt;v=spf1 a mx ip4:&amp;lt;ip-address&amp;gt; -all&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| TXT || _dmarc || &amp;lt;nowiki&amp;gt;v=DMARC1; p=none; sp=none; rf=afrf; pct=100; ri=86400&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| TXT || YYYYMMDD._domainkey || &amp;lt;nowiki&amp;gt;v=DKIM1; k=rsa; p=AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/rspamd/local.d/dkim_signing.conf|2=&lt;br /&gt;
path = &amp;quot;/var/lib/rspamd/dkim/$domain.$selector.key&amp;quot;;&lt;br /&gt;
selector_map = &amp;quot;/etc/rspamd/dkim_selectors.map&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/rspamd/dkim_selectors.map|2=&lt;br /&gt;
&amp;lt;domain&amp;gt; YYYYMMDD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{bc|sudo systemctl enable --now rspamd}}&lt;br /&gt;
&lt;br /&gt;
= ISPmail Admin =&lt;br /&gt;
&lt;br /&gt;
Start with the [[Arch_Post-Installation_Checklist#Non-Proxied_Web_Site|Non-Proxied Web Site template]].&lt;br /&gt;
&lt;br /&gt;
Then, in the site&amp;#039;s root:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo wget &amp;#039;https://www.ima.jungclaussen.com/dwn/dwn.php?v=0.9.6&amp;amp;f=.tar.gz&amp;#039;&lt;br /&gt;
sudo tar -xvf &amp;#039;dwn.php?v=0.9.6&amp;amp;f=.tar.gz&amp;#039;&lt;br /&gt;
sudo mv ispmail*/htdocs/* ./&lt;br /&gt;
sudo rm -r &amp;#039;dwn.php?v=0.9.6&amp;amp;f=.tar.gz&amp;#039; ispmail*&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Then edit the configuration file:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;ispmail_root&amp;gt;/cfg/config.inc.php|2=&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// @package     ISPmail_Admin&lt;br /&gt;
// @author      Ole Jungclaussen&lt;br /&gt;
// @version     0.9.0&lt;br /&gt;
&lt;br /&gt;
// SHOW PHP ERRORS (DEBUGGING)&lt;br /&gt;
&lt;br /&gt;
// ini_set(&amp;#039;display_startup_errors&amp;#039;, 1);&lt;br /&gt;
// ini_set(&amp;#039;display_errors&amp;#039;, 1);&lt;br /&gt;
// error_reporting(-1);&lt;br /&gt;
&lt;br /&gt;
// DATABASE ACCESS&lt;br /&gt;
&lt;br /&gt;
define(&amp;#039;IMA_CFG_DB_HOST&amp;#039;,       &amp;#039;127.0.0.1&amp;#039;);&lt;br /&gt;
define(&amp;#039;IMA_CFG_DB_PORT&amp;#039;,       &amp;#039;3306&amp;#039;);&lt;br /&gt;
define(&amp;#039;IMA_CFG_DB_USER&amp;#039;,       &amp;#039;mailadmin&amp;#039;);&lt;br /&gt;
define(&amp;#039;IMA_CFG_DB_PASSWORD&amp;#039;,   &amp;#039;&amp;lt;password&amp;gt;&amp;#039;);&lt;br /&gt;
define(&amp;#039;IMA_CFG_DB_DATABASE&amp;#039;,   &amp;#039;MAIL&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// PASSWORD HASHES (enable only *one*)&lt;br /&gt;
&lt;br /&gt;
define(&amp;#039;IMA_CFG_USE_SHA256_HASHES&amp;#039;, true);&lt;br /&gt;
// define(&amp;#039;IMA_CFG_USE_MD5_HASHES&amp;#039;, true);&lt;br /&gt;
&lt;br /&gt;
// ACCESS CONTROL: uncomment the type you want to use.&lt;br /&gt;
&lt;br /&gt;
define(&amp;#039;IMA_CFG_LOGIN&amp;#039;, IMA_LOGINTYPE_ACCOUNT);&lt;br /&gt;
// define(&amp;#039;IMA_CFG_LOGIN&amp;#039;, IMA_LOGINTYPE_ADM);&lt;br /&gt;
// define(&amp;#039;IMA_CFG_LOGIN&amp;#039;, IMA_LOGINTYPE_ADMAUTO);&lt;br /&gt;
&lt;br /&gt;
// ADMINISTRATOR&amp;#039;S NAME AND PASSWORD&lt;br /&gt;
&lt;br /&gt;
define(&amp;#039;IMA_CFG_ADM_USER&amp;#039;,  &amp;#039;admin&amp;#039;);      // admin username&lt;br /&gt;
define(&amp;#039;IMA_CFG_ADM_PASS&amp;#039;,  &amp;#039;&amp;lt;password&amp;gt;&amp;#039;); // admin password&lt;br /&gt;
&lt;br /&gt;
// LISTS&lt;br /&gt;
// Spread long lists on multiple pages.  Set number of maximum entries&lt;br /&gt;
// per page.  Changes take effect after login/logout.  If not defined,&lt;br /&gt;
// defaults to 65535.&lt;br /&gt;
&lt;br /&gt;
// define(&amp;#039;IMA_LIST_MAX_ENTRIES&amp;#039;, 200);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
After [[Arch_Post-Installation_Checklist#Finalization|finalization]] you should now be able to log in and set up your virtual mailboxes.&lt;br /&gt;
&lt;br /&gt;
= Rainloop =&lt;br /&gt;
&lt;br /&gt;
Start with the [[Arch_Post-Installation_Checklist#Non-Proxied_Web_Site|Non-Proxied Web Site template]].&lt;br /&gt;
&lt;br /&gt;
Change the following sections of the nginx conf file:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/nginx/sites-available/&amp;lt;domain&amp;gt;.conf|2=&lt;br /&gt;
...&lt;br /&gt;
	location ~ /data {&lt;br /&gt;
		deny			all;&lt;br /&gt;
	}&lt;br /&gt;
...&lt;br /&gt;
	location ~ \.php$ {&lt;br /&gt;
		fastcgi_pass		unix:/run/php-fpm/php-fpm.sock;&lt;br /&gt;
		fastcgi_index		index.php;&lt;br /&gt;
		include			fastcgi.conf;&lt;br /&gt;
		fastcgi_split_path_info	^(.+\.php)(.*)$;&lt;br /&gt;
		fastcgi_param		SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;br /&gt;
	}&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Download Rainloop&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
sudo cd /srv/http/&amp;lt;domain&amp;gt;&lt;br /&gt;
sudo wget https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Extract the zip file&lt;br /&gt;
&lt;br /&gt;
{{bc|sudo unzip rainloop-community-latest.zip}}&lt;br /&gt;
&lt;br /&gt;
Set the correct permissions on the files&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
sudo find . -type d -exec chmod 755 {} \;&lt;br /&gt;
sudo find . -type f -exec chmod 644 {} \;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Set the correct owner on the whole web root&lt;br /&gt;
&lt;br /&gt;
{{bc|sudo chown -R http:http /srv/http/&amp;lt;dir&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
After you [[Arch_Post-Installation_Checklist#Finalize|finalize the setup]], you should now be able to access the Admini Panel at {{ic|&amp;lt;nowiki&amp;gt;http://&amp;lt;domain&amp;gt;/?admin&amp;lt;/nowiki&amp;gt;}}.  The default login is admin:12345&lt;br /&gt;
&lt;br /&gt;
From the Admin Panel, add your domain under Domains.  Use the public-facing domain for the Name, and {{ic|localhost}} for the IMAP and SMTP servers.&lt;br /&gt;
&lt;br /&gt;
Under Login, set the Default Domain to {{ic|localhost}}.&lt;br /&gt;
&lt;br /&gt;
Optionally, you can enable contacts.  You will need to manually set up a database and user, but that is the only configuration needed to do on your part.&lt;br /&gt;
&lt;br /&gt;
For Security, you should enable all of the Security options.  You should also change the Admin Panel Access Credentials.&lt;br /&gt;
&lt;br /&gt;
Click on the power-off icon in the upper-right corner to finish with the Admin Panel.&lt;br /&gt;
&lt;br /&gt;
Navigate to {{ic|&amp;lt;nowiki&amp;gt;http://&amp;lt;domain&amp;gt;&amp;lt;/nowiki&amp;gt;}} to log in and access your mail.&lt;/div&gt;</summary>
		<author><name>BrainwreckedTech</name></author>
	</entry>
</feed>