<?xml version="1.0" encoding="utf-8" standalone="yes"?><feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://foundata.com/" xml:lang="de"><title>Proxmox-Ve auf foundata</title><id>https://foundata.com/de/tags/proxmox-ve/feed-atom.xml</id><link rel="self" type="application/atom+xml" hreflang="de" href="https://foundata.com/de/tags/proxmox-ve/feed-atom.xml" title="atom"/><link rel="alternate" type="text/html" hreflang="de" href="https://foundata.com/de/tags/proxmox-ve/" title="html"/><link rel="alternate" type="application/rss+xml" hreflang="de" href="https://foundata.com/de/tags/proxmox-ve/feed-rss.xml" title="rss"/><link rel="alternate" type="application/atom+xml" hreflang="en" href="https://foundata.com/en/tags/proxmox-ve/feed-atom.xml" title="atom, English"/><link rel="alternate" type="text/html" hreflang="en" href="https://foundata.com/en/tags/proxmox-ve/feed-atom.xml" title="html, English"/><link rel="alternate" type="application/rss+xml" hreflang="en" href="https://foundata.com/en/tags/proxmox-ve/feed-atom.xml" title="rss, English"/><updated>2023-09-01T18:09:00Z</updated><author><name>foundata GmbH</name><email>webmaster@foundata.com</email><uri>https://foundata.com/</uri></author><rights>© 2023-2026, foundata GmbH (https://foundata.com)</rights><icon>https://foundata.com/images/feed-icon.67ff83c698af1511552374e80cf5f6ff26d497ef21f04186cf058859d535ca75.svg</icon><logo>https://foundata.com/images/feed-logo.9138f24a120dabc7e3d34003662131cc9c7f2ff153ec39d2f6dea3a48c35b4bf.svg</logo><entry><title type="html">Proxmox VE: E-Mail-Versand einrichten (mail relay / smart host)</title><id>tag:foundata.com,2023-09-01:/de/blog/2023/proxmox-pve-email-relay-smart-host/</id><published>2023-09-01T18:09:00Z</published><updated>2023-09-01T18:09:00Z</updated><link href="https://foundata.com/de/blog/2023/proxmox-pve-email-relay-smart-host/?utm_source=feed-atom" rel="alternate" type="text/html"/><link href="https://foundata.com/en/blog/2023/proxmox-pve-email-relay-smart-host/?utm_source=feed-atom" rel="alternate" type="text/html" hreflang="en"/><author><name>Andreas Haerter</name><uri>https://andreashaerter.com/</uri></author><author><name>Frederik Meissner</name></author><summary type="html">Anleitung zum Einrichten des E-Mail-Versands via Relay auf Proxmox Virtual Environment (PVE).</summary><content type="html" xml:base="https://foundata.com/"><![CDATA[<p><a href="https://foundata.com/de/virtualisierung/">Proxmox Virtual Environment (PVE)-Server</a> sind als Hosts für virtuelle Maschinen und Container prinzipbedingt wichtige Systeme. Dennoch finden sich oft Installationen, die nicht in der Lage sind, E-Mails zu versenden und sich so bezüglich Updates, Backup-Meldungen oder Ähnlichem zu melden. Wir erklären auf dieser Seite kurz, wie man PVE konfiguriert, E-Mail-Benachrichtigungen über einen externen E-Mail-Server (<a href="https://de.wikipedia.org/wiki/SMTP-Relay-Server" target="_blank" rel="noreferrer noopener">Relay / Smart Host</a>) zu versenden.</p>
<h2 id="postfix" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#postfix" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="postfix">Postfix</a></h2><p>Postfix ist ein Mail Transfer Agent (MTA) und sollte bereits auf dem System installiert sein. Falls nicht, kann dies einfach nachgeholt werden:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">apt-get install postfix
</span></span><span class="line"><span class="cl">systemctl <span class="nb">enable</span> postfix
</span></span></code></pre></div><h3 id="basiskonfiguration" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#basiskonfiguration" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="basiskonfiguration">Basiskonfiguration</a></h3><p>Über eine passende Konfiguration sorgt Postfix dafür, dass die Mails vom lokalen System angenommen und per <a href="https://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol" target="_blank" rel="noreferrer noopener">SMTP</a> an ein externes Mailsystem weitergeleitet werden.</p>
<p>Die wichtigste Konfigurationsdatei ist <code>/etc/postfix/main.cf</code>. Zunächst sollte man in dieser sicherstellen, dass das Relay nur via <code>localhost</code> von Proxmox oder anderen Systemdiensten und nicht von Dritten über das Netzwerk genutzt werden kann:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="na">myhostname</span> <span class="o">=</span> <span class="s">pve.example.com</span>
</span></span><span class="line"><span class="cl"><span class="na">mydomain</span> <span class="o">=</span> <span class="s">example.com</span>
</span></span><span class="line"><span class="cl"><span class="na">mydestination</span> <span class="o">=</span> <span class="s">$myhostname, localhost.$mydomain, localhost</span>
</span></span><span class="line"><span class="cl"><span class="na">mynetworks</span> <span class="o">=</span> <span class="s">127.0.0.0/8</span>
</span></span><span class="line"><span class="cl"><span class="na">inet_interfaces</span> <span class="o">=</span> <span class="s">loopback-only</span>
</span></span></code></pre></div><p><code>pve.example.com</code> ist durch den FQDN<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> des Systems und <code>example.com</code> durch die E-Mail-Absender-Domain zu ersetzen. Per Default sollten <code>mydestination</code>, <code>mynetworks</code> und <code>inet_interfaces</code> bereits die richtigen Werte haben.</p>
<h3 id="relay--smart-host" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#relay--smart-host" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="relay--smart-host">Relay / Smart Host</a></h3><p>Für die Authentifizierung am externen Mailserver, der für den eigentlichen Versand benutzt werden soll, wird noch ein weiteres Paket benötigt:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">apt-get install libsasl2-modules
</span></span></code></pre></div><p>Die Relay-Einstellungen werden ebenfalls in der <code>/etc/postfix/main.cf</code> festgelegt. Die Einstellung <code>relayhost =</code> existiert per Default bereits in der Datei (ohne Wert) und kann angepasst werden. Alle anderen Optionen, die noch nicht in der Konfiguration existierten, wurden einfach am Ende der Datei hinzugefügt:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="na">relayhost</span> <span class="o">=</span> <span class="s">[your-mailserver-on-the-internet.example.com]:587</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># [...]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># enable SASL authentication?</span>
</span></span><span class="line"><span class="cl"><span class="na">smtp_sasl_auth_enable</span> <span class="o">=</span> <span class="s">yes</span>
</span></span><span class="line"><span class="cl"><span class="c1"># disallow methods that allow anonymous authentication.</span>
</span></span><span class="line"><span class="cl"><span class="na">smtp_sasl_security_options</span> <span class="o">=</span> <span class="s">noanonymous</span>
</span></span><span class="line"><span class="cl"><span class="na">smtp_sasl_tls_security_options</span> <span class="o">=</span> <span class="s">noanonymous</span>
</span></span><span class="line"><span class="cl"><span class="c1"># where to find sasl_passwd</span>
</span></span><span class="line"><span class="cl"><span class="na">smtp_sasl_password_maps</span> <span class="o">=</span> <span class="s">hash:/etc/postfix/sasl_passwd</span>
</span></span><span class="line"><span class="cl"><span class="c1"># TLS transport encryption; may = STARTTLS; encrypt = Enforce TLS</span>
</span></span><span class="line"><span class="cl"><span class="na">smtp_tls_security_level</span> <span class="o">=</span> <span class="s">may</span>
</span></span><span class="line"><span class="cl"><span class="c1"># where to find CA certificates (smtp_tls_CApath should have same value if existing)</span>
</span></span><span class="line"><span class="cl"><span class="na">smtp_tls_CAfile</span> <span class="o">=</span> <span class="s">/etc/ssl/certs/ca-certificates.crt</span>
</span></span><span class="line"><span class="cl"><span class="c1"># maximum amount of memory in bytes for storing a message header (default: 102400)</span>
</span></span><span class="line"><span class="cl"><span class="na">header_size_limit</span> <span class="o">=</span> <span class="s">4096000</span>
</span></span></code></pre></div><p><code>[your-mailserver-on-the-internet.example.com]:587</code> ist durch den eigenen Mailserver mit passendem Port zu ersetzen (im Normalfall <code>587</code> oder <code>25</code>). Wenn dieser Server einen Benutzernamen und Passwort erfordert (→ <code>smtp_sasl_auth_enable = yes</code>) sind die Zugangsdaten in der Datei <code>/etc/postfix/sasl_passwd</code> in folgender Form zu speichern:</p>
<pre tabindex="0"><code>your-mailserver-on-the-internet.example.com   username:password
</code></pre><p><em>Nach jeder Änderung</em> an der <code>/etc/postfix/sasl_passwd</code> muss das zugehörige Postfix Mapping aktualisiert werden:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">postmap /etc/postfix/sasl_passwd
</span></span><span class="line"><span class="cl">systemctl restart postfix.service
</span></span></code></pre></div><p>Die Datei sollte nur für <code>root</code> lesbar sein, da Sie Zugangsdaten enthält:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chown <span class="s2">&#34;root:root&#34;</span> <span class="s2">&#34;/etc/postfix/sasl_passwd&#34;</span>
</span></span><span class="line"><span class="cl">chmod <span class="m">0600</span> <span class="s2">&#34;/etc/postfix/sasl_passwd&#34;</span>
</span></span></code></pre></div><h3 id="korrekte-absender-adresse-erzwingen" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#korrekte-absender-adresse-erzwingen" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="korrekte-absender-adresse-erzwingen">Korrekte Absender-Adresse erzwingen</a></h3><p>Über eine einfache Konfiguration kann dafür gesorgt werden, dass die Absender-Angabe von E-Mails an das Relay auf <code>do-not-reply@example.com</code> gesetzt werden (<code>@example.com</code> ist im Folgenden <strong>zwingend auf die valide Absenderdomain</strong> bzw. den Wert von <code>mydomain = </code> anzupassen).</p>
<p>In der <code>/etc/postfix/main.cf</code>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="na">sender_canonical_classes</span> <span class="o">=</span> <span class="s">envelope_sender, header_sender</span>
</span></span><span class="line"><span class="cl"><span class="na">sender_canonical_maps</span> <span class="o">=</span> <span class="s">regexp:/etc/postfix/sender_canonical</span>
</span></span><span class="line"><span class="cl"><span class="na">smtp_header_checks</span> <span class="o">=</span> <span class="s">regexp:/etc/postfix/header_check</span>
</span></span></code></pre></div><p>Inhalt der Datei <code>/etc/postfix/sender_canonical</code>:</p>
<pre tabindex="0"><code>/.+/    do-not-reply@example.com
</code></pre><p><em>Nach jeder Änderung</em> an der <code>/etc/postfix/sender_canonical</code> muss das zugehörige Postfix Mapping aktualisiert werden:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">postmap /etc/postfix/sender_canonical
</span></span></code></pre></div><p>Inhalt der Datei <code>/etc/postfix/header_check</code>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="na">/From:.*/ REPLACE From: pve.example.com (Proxmox, PVE) &lt;do-not-reply@example.com&gt;</span>
</span></span></code></pre></div><p>Auch diese Dateien sollten nur für <code>root</code> lesbar sein:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chown <span class="s2">&#34;root:root&#34;</span> <span class="s2">&#34;/etc/postfix/sender_canonical&#34;</span>
</span></span><span class="line"><span class="cl">chmod <span class="m">0600</span> <span class="s2">&#34;/etc/postfix/sender_canonical&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">chown <span class="s2">&#34;root:root&#34;</span> <span class="s2">&#34;/etc/postfix/header_check&#34;</span>
</span></span><span class="line"><span class="cl">chmod <span class="m">0600</span> <span class="s2">&#34;/etc/postfix/header_check&#34;</span>
</span></span></code></pre></div><h3 id="root-alias" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#root-alias" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="root-alias"><code>root</code>-Alias</a></h3><p>Mails an den <code>root</code>-User des System können nun ebenfalls einfach an eine Admin-E-Mail-Adresse weitergeleitet werden. Dazu ist in der Datei <code>/etc/aliases</code> eine Zeile hinzuzufügen (<code>admin@example.net</code> ist auf auf eine geeignete Zieladresse anzupassen):</p>
<pre tabindex="0"><code>[...]
root: admin@example.net
</code></pre><p><em>Nach jeder Änderung</em> an der <code>/etc/aliases</code> muss die Postfix-Alias-Datenbank aktualisiert werden:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">postalias /etc/aliases
</span></span></code></pre></div><p>In der <code>/etc/postfix/main.cf</code> ist das passende Setting per Default bereits vorhanden, man kann dies aber nochmals kontrollieren:</p>
<pre tabindex="0"><code>alias_maps = hash:/etc/aliases
</code></pre><h2 id="absende--und-benutzeradressen-in-pve" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#absende--und-benutzeradressen-in-pve" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="absende--und-benutzeradressen-in-pve">Absende- und Benutzeradressen in PVE</a></h2><p>Wenn man die Postfix-Konfiguration wie oben beschrieben vorgenommen hat, wird die Absende-Adresse in jedem Fall durch die Einstellungen in <code>/etc/postfix/sender_canonical</code> und <code>/etc/postfix/header_check</code> angepasst bzw. überschrieben. Dennoch kann man der Form halber die Absenderadresse in der Web-UI unter &ldquo;Datacenter → Options → Email from address&rdquo; noch auf den korrekten Wert setzen.</p>
<p>Zudem können unter &ldquo;Datacenter → Permissions → Users&rdquo; noch die E-Mail-Adressen der PVE-Benutzerkonten festgelegt werden.</p>
<h2 id="test-und-debugging" class="scroll-mt-20 md:scroll-mt-24 wrap-break-word group/heading "><a href="#test-und-debugging" class="group-hover/heading:after:content-['#'] group-hover/heading:after:ml-1.5 group-hover/heading:after:text-content-400" id="test-und-debugging">Test und Debugging</a></h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">systemctl restart postfix.service
</span></span><span class="line"><span class="cl">systemctl status postfix.service
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># send test mail to admin@example.com</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;This is the message&#34;</span> <span class="p">|</span> mail -s <span class="s2">&#34;Hello World from </span><span class="k">$(</span>hostname<span class="k">)</span><span class="s2">&#34;</span> <span class="s2">&#34;admin@example.com&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># log</span>
</span></span><span class="line"><span class="cl">journalctl -f -u postfix*
</span></span></code></pre></div><div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Diesen kann man sich einfach über <code>hostname -f</code> ausgeben lassen.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content><category scheme="taxonomy:tags" term="proxmox" label="proxmox"/><category scheme="taxonomy:tags" term="proxmox-ve" label="proxmox-ve"/><category scheme="taxonomy:tags" term="email" label="email"/><category scheme="taxonomy:tags" term="postfix" label="postfix"/></entry></feed>