<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.qmailtoaster.org:80/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ebroch</id>
	<title>QmailToaster - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.qmailtoaster.org:80/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ebroch"/>
	<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Special:Contributions/Ebroch"/>
	<updated>2026-04-09T02:55:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1641</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1641"/>
		<updated>2025-08-23T19:39:32Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # /etc/init.d/vusaged stop&lt;br /&gt;
 # qmailctl stop&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/vusaged.service&amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Usaged Service&lt;br /&gt;
 After=network.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 ExecStart=/var/qmail/bin/vusaged start&lt;br /&gt;
 ExecStop=/var/qmail/bin/vusaged stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/vusaged reload&lt;br /&gt;
 Restart=on-failure&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reload&lt;br /&gt;
 # systemctl enable --now qmail vusaged&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, restart, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1640</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1640"/>
		<updated>2025-08-23T19:38:27Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # /etc/init.d/vusaged stop&lt;br /&gt;
 # qmailctl stop&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/vusaged.service&amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Usaged Service&lt;br /&gt;
 After=network.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 ExecStart=/var/qmail/bin/vusaged start&lt;br /&gt;
 ExecStop=/var/qmail/bin/vusaged stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/vusaged reload&lt;br /&gt;
 Restart=on-failure&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reload&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, restart, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1639</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1639"/>
		<updated>2025-08-23T19:36:32Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # kill `cat /run/vusaged.pid`&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/vusaged.service&amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Usaged Service&lt;br /&gt;
 After=network.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 ExecStart=/var/qmail/bin/vusaged start&lt;br /&gt;
 ExecStop=/var/qmail/bin/vusaged stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/vusaged reload&lt;br /&gt;
 Restart=on-failure&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reload&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, restart, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1638</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1638"/>
		<updated>2025-08-23T19:23:01Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/vusaged.service&amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Usaged Service&lt;br /&gt;
 After=network.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 ExecStart=/var/qmail/bin/vusaged start&lt;br /&gt;
 ExecStop=/var/qmail/bin/vusaged stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/vusaged reload&lt;br /&gt;
 Restart=on-failure&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, restart, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1637</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1637"/>
		<updated>2025-08-23T19:22:29Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/vusaged.service&amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Usaged Service&lt;br /&gt;
 After=network.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 ExecStart=/var/qmail/bin/vusaged start&lt;br /&gt;
 ExecStop=/var/qmail/bin/vusaged stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/vusaged reload&lt;br /&gt;
 Restart=on-failure&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, restart, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1636</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1636"/>
		<updated>2025-08-23T19:21:44Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/vusaged.service&amp;lt;&amp;lt;EOF&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Usaged Service&lt;br /&gt;
 After=network.target&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 ExecStart=/var/qmail/bin/vusaged start&lt;br /&gt;
 ExecStop=/var/qmail/bin/vusaged stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/vusaged reload&lt;br /&gt;
 Restart=on-failure&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, restart, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1635</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1635"/>
		<updated>2025-08-23T14:11:17Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, restart, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1634</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1634"/>
		<updated>2025-08-22T19:10:07Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1633</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1633"/>
		<updated>2025-08-22T19:07:43Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        start, stop, status, and reload can be accomplished with the command &#039;systemctl [command] qmail&#039;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1632</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1632"/>
		<updated>2025-08-22T19:05:48Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
 Notes: All qmailctl functionlity is still intact.&lt;br /&gt;
        Starting, stopping, and reloading qmail can be accomplished with the command systemctl &#039;command&#039; qmail&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1631</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1631"/>
		<updated>2025-08-22T19:03:30Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.12 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== systemd ==&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Systemd Systemd conversion]&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1630</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1630"/>
		<updated>2025-08-22T19:02:25Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: /* systemd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.12 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== systemd ==&lt;br /&gt;
 http://wiki.qmailtoaster.org/index.php?title=Systemd&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1629</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1629"/>
		<updated>2025-08-22T19:00:09Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1628</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1628"/>
		<updated>2025-08-22T18:59:30Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
 # cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1627</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1627"/>
		<updated>2025-08-22T18:59:04Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /var/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1626</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1626"/>
		<updated>2025-08-22T18:58:26Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /usr/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1625</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1625"/>
		<updated>2025-08-22T18:58:08Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /usr/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1624</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1624"/>
		<updated>2025-08-22T18:57:28Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /usr/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&amp;lt;br&amp;gt;&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&amp;lt;br&amp;gt;&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&amp;lt;br&amp;gt;&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1623</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Systemd&amp;diff=1623"/>
		<updated>2025-08-22T18:56:38Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: Created page with &amp;quot; &amp;#039;&amp;#039;&amp;#039;Systemd conversion&amp;#039;&amp;#039;&amp;#039;   # unlink /usr/bin/qmailctl  # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin  # ln -s /usr/qmail/bin/qmail /usr/bin/qmailctl  cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF   # Automatically generated by systemd-sysv-generator   [Unit]  Documentation=man:systemd-sysv-generator(8)  SourcePath=/var/qmail/bin/qmail  Description=SYSV: Qmailtoaster MTA  Before=multi-user.target  Before=multi-user.target  Before=multi-user.target  Before=gra...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Systemd conversion&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 # unlink /usr/bin/qmailctl&lt;br /&gt;
 # mv /etc/init.d/qmail /etc/init.d/vusaged /var/qmail/bin&lt;br /&gt;
 # ln -s /usr/qmail/bin/qmail /usr/bin/qmailctl&lt;br /&gt;
 cat &amp;gt; /etc/systemd/system/qmail.service &amp;lt;&amp;lt;EOF&lt;br /&gt;
&lt;br /&gt;
 # Automatically generated by systemd-sysv-generator&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Documentation=man:systemd-sysv-generator(8)&lt;br /&gt;
 SourcePath=/var/qmail/bin/qmail&lt;br /&gt;
 Description=SYSV: Qmailtoaster MTA&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=multi-user.target&lt;br /&gt;
 Before=graphical.target&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=forking&lt;br /&gt;
 Restart=no&lt;br /&gt;
 TimeoutSec=5min&lt;br /&gt;
 IgnoreSIGPIPE=no&lt;br /&gt;
 KillMode=process&lt;br /&gt;
 GuessMainPID=no&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 ExecStart=/var/qmail/bin/qmail start&lt;br /&gt;
 ExecStop=/var/qmail/bin/qmail stop&lt;br /&gt;
 ExecReload=/var/qmail/bin/qmail reload&lt;br /&gt;
&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # reboot&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1622</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1622"/>
		<updated>2025-08-22T18:46:49Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: /* SYSV to systemd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.12 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== systemd ==&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1621</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1621"/>
		<updated>2025-08-22T18:46:31Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: /* SYSV to systemd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.12 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== SYSV to systemd ==&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Configuration&amp;diff=1620</id>
		<title>Configuration</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Configuration&amp;diff=1620"/>
		<updated>2025-08-22T18:45:40Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#Configuration|Back]]&lt;br /&gt;
== [[ Initial Configuration ]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Domains]] ==&lt;br /&gt;
Follow this link for information about configuring domains.&lt;br /&gt;
&lt;br /&gt;
== [[Users]] ==&lt;br /&gt;
Follow this link for information about configuring users.&lt;br /&gt;
&lt;br /&gt;
List of [[Mobile Device]] which succesfully connect to QmailToaster with SMTP-Auth and Submission Port&lt;br /&gt;
&lt;br /&gt;
List of [[Wapmail]] for mobile users with GPRS and Wap Browser Handphone&lt;br /&gt;
&lt;br /&gt;
== Control Files ==&lt;br /&gt;
The majority of the configuration files are located in the &#039;&#039;&#039;/var/qmail/control &#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
man &#039;&#039;&#039;qmail-control&#039;&#039;&#039; excerpt:&lt;br /&gt;
&lt;br /&gt;
You can change the behavior of the &#039;&#039;&#039;qmail&#039;&#039;&#039; system by modifying &#039;&#039;&#039;qmail&#039;&#039;&#039;&#039;s &amp;lt;u&amp;gt;control&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;files&amp;lt;/u&amp;gt; in &#039;&#039;&#039;/var/qmail/control&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;qmail&#039;&#039;&#039; [but not Qmail-Toaster] can survive with just one control file, [[me]], containing the fully-qualified name of the current host. This file is used as the default for other hostname-related control files.&lt;br /&gt;
&lt;br /&gt;
Comments are allowed in [[badhelo]], [[badmailfrom]], [[badmailfromnorelay]], [[badmailto]], [[badmailtonorelay]], [[locals]], [[percenthack]], [[qmqpservers]], [[rcpthosts]], [[smtproutes]], and [[virtualdomains]]. Trailing spaces and tabs are allowed in any [qmail] control file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Control Files List]] ===&lt;br /&gt;
=== [[Control Files by Name]] ===&lt;br /&gt;
Table of Control Files organized alphabetically with default values, included with Qmail-Toaster, and used by information.&lt;br /&gt;
=== [[Control Files by Function]] ===&lt;br /&gt;
Links to Control File descriptions organized by module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
=== Pre Receipt ===&lt;br /&gt;
==== [[chkuser]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[RBLs]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[SPF]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[Spamdyke]] ====&lt;br /&gt;
&lt;br /&gt;
=== Post Receipt ===&lt;br /&gt;
==== [[Simscan]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[Clamav]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[Spamassassin]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[Amavis]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[Spam Throttle]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[SURBL]] ====&lt;br /&gt;
&lt;br /&gt;
==== [[Dspam|Dspam]] ====&lt;br /&gt;
&lt;br /&gt;
===== [[Dspam w/PostgreSQL]] =====&lt;br /&gt;
&lt;br /&gt;
==== [[Domainkeys]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;***Obsolete***&amp;lt;/span&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
=== [[DNS Server]] ===&lt;br /&gt;
&lt;br /&gt;
===[[SRS]]===&lt;br /&gt;
&lt;br /&gt;
=== [[tcp.smtp]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[tcpserver]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[DKIM]] ===&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
=== [[Certificate]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[eMPF]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[Fail2ban]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[SMTPS]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[Submission]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[Securing SquirrelMail|SquirrelMail]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[ Secure /admin-toaster/ ]] ===&lt;br /&gt;
&lt;br /&gt;
== [[Dovecot]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Vpopmail]] ==&lt;br /&gt;
&lt;br /&gt;
== [[PHP]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Qmail queue]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Qmail Dovecot Authentication]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Qmail Active Directory Authentication]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Dovecot Active Directory Authentication]] ==&lt;br /&gt;
&lt;br /&gt;
== [[IMAP/SMTP Authentication tests]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Redirection]] ==&lt;br /&gt;
Follow this link for information about how to redirect email to different addresses.&lt;br /&gt;
&lt;br /&gt;
== [[systemd]] ==&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1619</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1619"/>
		<updated>2025-08-22T18:43:25Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: /* SYSV to systemd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.12 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== SYSV to systemd ==&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=systemd]&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1618</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1618"/>
		<updated>2025-08-22T18:42:50Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.12 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== SYSV to systemd ==&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=SYSV-systemd]&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1617</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1617"/>
		<updated>2025-08-22T18:40:16Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.12 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== SYSV to systemd ==&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1616</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1616"/>
		<updated>2025-08-21T21:13:23Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&amp;lt;br&amp;gt;&lt;br /&gt;
 Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
       In order to run dspam (/usr/bin/dspam) instead set the environment variable DSPAM_BIN in either  &lt;br /&gt;
       /etc/tcprules.d/tcp.smtp or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&amp;lt;br&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;# Fedora EL8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedoramirrors &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora28.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 28&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;# Fedora EL9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedoramirrors &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora34.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 34&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;# Fedora EL10&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora41.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora41]&lt;br /&gt;
 name=Fedora 41 RPM - x86_64&lt;br /&gt;
 baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/41/Everything/\$basearch/os/&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 [fedora41-source]&lt;br /&gt;
 name=Fedora 41 SRPM - x86_64 Source&lt;br /&gt;
 baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/41/Everything/source/tree/&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1615</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1615"/>
		<updated>2025-08-21T20:37:04Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&amp;lt;br&amp;gt;&lt;br /&gt;
 Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
       In order to run dspam (/usr/bin/dspam) instead set the environment variable DSPAM_BIN in either  &lt;br /&gt;
       /etc/tcprules.d/tcp.smtp or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&amp;lt;br&amp;gt;&lt;br /&gt;
 # Fedora EL8&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedoramirrors &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora28.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 28&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 # Fedora EL9&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedoramirrors &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora34.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 34&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 # Fedora EL10&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora41.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora41]&lt;br /&gt;
 name=Fedora 41 RPM - x86_64&lt;br /&gt;
 baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/41/Everything/\$basearch/os/&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 [fedora41-source]&lt;br /&gt;
 name=Fedora 41 SRPM - x86_64 Source&lt;br /&gt;
 baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/41/Everything/source/tree/&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1614</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1614"/>
		<updated>2025-08-21T20:32:04Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&amp;lt;br&amp;gt;&lt;br /&gt;
 Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
       In order to run dspam (/usr/bin/dspam) instead set the environment variable DSPAM_BIN in either  &lt;br /&gt;
       /etc/tcprules.d/tcp.smtp or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&amp;lt;br&amp;gt;&lt;br /&gt;
 # Fedora EL8&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedoramirrors &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora28.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 28&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 # Fedora EL9&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedoramirrors &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora34.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 34&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 # Fedora EL10&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora41.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora41]&lt;br /&gt;
 name=Fedora 41 RPM - x86_64&lt;br /&gt;
 baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/41/Everything/$basearch/os/&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 [fedora41-source]&lt;br /&gt;
 name=Fedora 41 SRPM - x86_64 Source&lt;br /&gt;
 baseurl=https://dl.fedoraproject.org/pub/fedora/linux/releases/41/Everything/source/tree/&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1613</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1613"/>
		<updated>2025-08-21T20:28:23Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&amp;lt;br&amp;gt;&lt;br /&gt;
 Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
       In order to run dspam (/usr/bin/dspam) instead set the environment variable DSPAM_BIN in either  &lt;br /&gt;
       /etc/tcprules.d/tcp.smtp or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&amp;lt;br&amp;gt;&lt;br /&gt;
 # Fedora EL8&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedoramirrors &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora28.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 28&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 # Fedora EL9&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedoramirrors &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/yum.repos.d/fedora34.repo &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 34&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1612</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1612"/>
		<updated>2025-08-21T20:23:32Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&amp;lt;br&amp;gt;&lt;br /&gt;
 Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
       In order to run dspam (/usr/bin/dspam) instead set the environment variable DSPAM_BIN in either  &lt;br /&gt;
       /etc/tcprules.d/tcp.smtp or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&lt;br /&gt;
&lt;br /&gt;
 # Begin Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./ttt &amp;lt;&amp;lt; EOF&lt;br /&gt;
 https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./ttt1 &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [fedora]&lt;br /&gt;
 name=Fedora 28&lt;br /&gt;
 mirrorlist=file:///etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 enabled=0&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 priority=100&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 # End Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1611</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1611"/>
		<updated>2025-08-21T20:08:05Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&amp;lt;br&amp;gt;&lt;br /&gt;
 Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
       In order to run dspam (/usr/bin/dspam) instead set the environment variable DSPAM_BIN in either  &lt;br /&gt;
       /etc/tcprules.d/tcp.smtp or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 FEDORAREPO=&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&lt;br /&gt;
&lt;br /&gt;
 # Begin Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
 rel=`grep &amp;quot;release 8&amp;quot; /etc/*-release`&lt;br /&gt;
 if [[ ! -z $rel ]]&lt;br /&gt;
 then&lt;br /&gt;
  rel=8&lt;br /&gt;
  FEDORAREPO=--enablerepo=fedora&lt;br /&gt;
  sites=( https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/ )&lt;br /&gt;
  printf &#039;%s\n%s\n%s\n%s\n%s\n%s\n&#039; &#039;[fedora]&#039; &#039;name=Fedora 28&#039; &#039;mirrorlist=file:///etc/yum.repos.d/fedoramirrors&#039; \&lt;br /&gt;
         &#039;enabled=0&#039; &#039;gpgcheck=0&#039; &#039;priority=100&#039; &amp;gt; /etc/yum.repos.d/fedora28.repo&lt;br /&gt;
  printf &#039;%s\n%s\n%s\n%s\n%s\n%s\n&#039; &amp;quot;${sites[0]}&amp;quot; &amp;quot;${sites[1]}&amp;quot; &amp;quot;${sites[2]}&amp;quot; &amp;quot;{$sites[3]}&amp;quot; &amp;quot;${sites[4]}&amp;quot; &amp;quot;${sites[5]}&amp;quot; \&lt;br /&gt;
        &amp;gt; /etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 else&lt;br /&gt;
    rel=7&lt;br /&gt;
 fi&lt;br /&gt;
 # End Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1610</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1610"/>
		<updated>2025-08-21T20:07:30Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&amp;lt;br&amp;gt;&lt;br /&gt;
 Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
       In order to run dspam (/usr/bin/dspam) set the environment variable DSPAM_BIN in either  &lt;br /&gt;
       /etc/tcprules.d/tcp.smtp or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 FEDORAREPO=&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&lt;br /&gt;
&lt;br /&gt;
 # Begin Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
 rel=`grep &amp;quot;release 8&amp;quot; /etc/*-release`&lt;br /&gt;
 if [[ ! -z $rel ]]&lt;br /&gt;
 then&lt;br /&gt;
  rel=8&lt;br /&gt;
  FEDORAREPO=--enablerepo=fedora&lt;br /&gt;
  sites=( https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/ )&lt;br /&gt;
  printf &#039;%s\n%s\n%s\n%s\n%s\n%s\n&#039; &#039;[fedora]&#039; &#039;name=Fedora 28&#039; &#039;mirrorlist=file:///etc/yum.repos.d/fedoramirrors&#039; \&lt;br /&gt;
         &#039;enabled=0&#039; &#039;gpgcheck=0&#039; &#039;priority=100&#039; &amp;gt; /etc/yum.repos.d/fedora28.repo&lt;br /&gt;
  printf &#039;%s\n%s\n%s\n%s\n%s\n%s\n&#039; &amp;quot;${sites[0]}&amp;quot; &amp;quot;${sites[1]}&amp;quot; &amp;quot;${sites[2]}&amp;quot; &amp;quot;{$sites[3]}&amp;quot; &amp;quot;${sites[4]}&amp;quot; &amp;quot;${sites[5]}&amp;quot; \&lt;br /&gt;
        &amp;gt; /etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 else&lt;br /&gt;
    rel=7&lt;br /&gt;
 fi&lt;br /&gt;
 # End Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1609</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1609"/>
		<updated>2025-08-21T20:06:50Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
       In order to run dspam (/usr/bin/dspam) set the environment variable DSPAM_BIN in either  &lt;br /&gt;
       /etc/tcprules.d/tcp.smtp or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 FEDORAREPO=&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&lt;br /&gt;
&lt;br /&gt;
 # Begin Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
 rel=`grep &amp;quot;release 8&amp;quot; /etc/*-release`&lt;br /&gt;
 if [[ ! -z $rel ]]&lt;br /&gt;
 then&lt;br /&gt;
  rel=8&lt;br /&gt;
  FEDORAREPO=--enablerepo=fedora&lt;br /&gt;
  sites=( https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/ )&lt;br /&gt;
  printf &#039;%s\n%s\n%s\n%s\n%s\n%s\n&#039; &#039;[fedora]&#039; &#039;name=Fedora 28&#039; &#039;mirrorlist=file:///etc/yum.repos.d/fedoramirrors&#039; \&lt;br /&gt;
         &#039;enabled=0&#039; &#039;gpgcheck=0&#039; &#039;priority=100&#039; &amp;gt; /etc/yum.repos.d/fedora28.repo&lt;br /&gt;
  printf &#039;%s\n%s\n%s\n%s\n%s\n%s\n&#039; &amp;quot;${sites[0]}&amp;quot; &amp;quot;${sites[1]}&amp;quot; &amp;quot;${sites[2]}&amp;quot; &amp;quot;{$sites[3]}&amp;quot; &amp;quot;${sites[4]}&amp;quot; &amp;quot;${sites[5]}&amp;quot; \&lt;br /&gt;
        &amp;gt; /etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 else&lt;br /&gt;
    rel=7&lt;br /&gt;
 fi&lt;br /&gt;
 # End Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1608</id>
		<title>Simscan</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Simscan&amp;diff=1608"/>
		<updated>2025-08-21T20:05:58Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: /* Control */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Simscan|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
 In /etc/tcprules.d/tcp.smtp set environment variable QMAILQUEUE to simscan binary &lt;br /&gt;
   ...,QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;,...&lt;br /&gt;
 Rebuild tcp.smtp&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
== Control ==&lt;br /&gt;
&lt;br /&gt;
 Simscan&#039;s control file is /var/qmail/control/simcontrol&lt;br /&gt;
 It&#039;s format looks like thus:&amp;lt;br&amp;gt;&lt;br /&gt;
 :clam=yes,spam=yes,spam_hits=9.5,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif&lt;br /&gt;
 This tells simscan for all domains to scan with ClamAV, Spamassassin, filter attachments, queueing all mail after filtering&amp;lt;br&amp;gt;&lt;br /&gt;
 Consider the following format:&amp;lt;br&amp;gt;&lt;br /&gt;
 domain.tld:dspam=yes,rspam=yes,clam=yes,spam=yes,spam_passthru=yes,...&lt;br /&gt;
 This tells simscan for domain.tld to scan with Dspam, Rspam, ClamAV, Spamassassin,...&amp;lt;br&amp;gt;&lt;br /&gt;
 Upon edit of simcontrol the file must be put into proper format for use, run&lt;br /&gt;
 # qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: simscan automatically runs dspam client (/usr/bin/dspamc). So the dspam server must be running. &lt;br /&gt;
      In order to run dspam (/usr/bin/dspam) set the environment variable DSPAM_BIN in either /etc/tcprules.d/tcp.smtp&lt;br /&gt;
      or in the smtp run script.&lt;br /&gt;
&lt;br /&gt;
== Ramdisk ==&lt;br /&gt;
&lt;br /&gt;
 Use htop or other program to determine available memory for ramdisk (size=)&lt;br /&gt;
  # clamgid=$(test -z &amp;quot;$(cat /etc/passwd | grep ^clamav)&amp;quot; &amp;amp;&amp;amp; id -g clamscan 2&amp;gt;/dev/null || id -g clamav 2&amp;gt;/dev/null) &amp;amp;&amp;amp; echo $clamgid&lt;br /&gt;
  # qmailctl stop&lt;br /&gt;
  # mount -t tmpfs -o size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 myramdisk /var/qmail/simscan&lt;br /&gt;
  # ls -ld /var/qmail/simscan&lt;br /&gt;
     drwxr-x--- 2 clamscan root 6 Aug 17 13:28 /var/qmail/simscan&lt;br /&gt;
  # qmailctl start&lt;br /&gt;
  # df -h /var/qmail/simscan&lt;br /&gt;
     Filesystem      Size  Used Avail Use% Mounted on&lt;br /&gt;
     myramdisk       1.0G     0  1.0G   0% /var/qmail/simscan&lt;br /&gt;
  # cp /etc/fstab /etc/fstab.bak&lt;br /&gt;
  # echo &amp;quot;myramdisk /var/qmail/simscan tmpfs size=1024m,nodev,noexec,noatime,uid=$clamgid,gid=0,mode=0750 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
  Make sure /etc/fstab file is okay before a reboot&lt;br /&gt;
  # cat /etc/fstab&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
 FEDORAREPO=&lt;br /&gt;
 Install Dspam, Rspam, SA userprefs&lt;br /&gt;
&lt;br /&gt;
 # Begin Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
 rel=`grep &amp;quot;release 8&amp;quot; /etc/*-release`&lt;br /&gt;
 if [[ ! -z $rel ]]&lt;br /&gt;
 then&lt;br /&gt;
  rel=8&lt;br /&gt;
  FEDORAREPO=--enablerepo=fedora&lt;br /&gt;
  sites=( https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://mirror.math.princeton.edu/pub/fedora-archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://pubmirror1.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  https://pubmirror2.math.uh.edu/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  http://mirrors.kernel.org/fedora-buffet/archive/fedora/linux/releases/28/Everything/x86_64/os/ &lt;br /&gt;
  https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/ )&lt;br /&gt;
  printf &#039;%s\n%s\n%s\n%s\n%s\n%s\n&#039; &#039;[fedora]&#039; &#039;name=Fedora 28&#039; &#039;mirrorlist=file:///etc/yum.repos.d/fedoramirrors&#039; \&lt;br /&gt;
         &#039;enabled=0&#039; &#039;gpgcheck=0&#039; &#039;priority=100&#039; &amp;gt; /etc/yum.repos.d/fedora28.repo&lt;br /&gt;
  printf &#039;%s\n%s\n%s\n%s\n%s\n%s\n&#039; &amp;quot;${sites[0]}&amp;quot; &amp;quot;${sites[1]}&amp;quot; &amp;quot;${sites[2]}&amp;quot; &amp;quot;{$sites[3]}&amp;quot; &amp;quot;${sites[4]}&amp;quot; &amp;quot;${sites[5]}&amp;quot; \&lt;br /&gt;
        &amp;gt; /etc/yum.repos.d/fedoramirrors&lt;br /&gt;
 else&lt;br /&gt;
    rel=7&lt;br /&gt;
 fi&lt;br /&gt;
 # End Fedora Install CentOS 8 ***** ONLY *****&lt;br /&gt;
&lt;br /&gt;
 # Begin DSpam DB Install, Skip if already installed&lt;br /&gt;
 wget https://raw.githubusercontent.com/qmtoaster/dspam/master/dspamdb.sql&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Error downloading dspam db: ($?), exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 MYSQLPW=&lt;br /&gt;
 # Get DB password for administrator and check validity.&lt;br /&gt;
 if [ -z &amp;quot;$MYSQLPW&amp;quot; ]; then&lt;br /&gt;
    read -s -p &amp;quot;Enter MySQL/MariaDB admin password to create dspam database: &amp;quot; MYSQLPW&lt;br /&gt;
 fi&lt;br /&gt;
 credfile=~/sql.cnf&lt;br /&gt;
 echo -e &amp;quot;[client]\nuser=root\npassword=&#039;$MYSQLPW&#039;\nhost=localhost&amp;quot; &amp;gt; $credfile&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
   echo &amp;quot;Bad MySQL/MariaDB administrator password or MySQL/MariaDB is not running. Exiting...&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;Dropping Dspam database if it exists already...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;use dspam&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
 [ &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot; ] &amp;amp;&amp;amp; mysqldump --defaults-extra-file=$credfile dspam &amp;gt; dspam.sql \&lt;br /&gt;
               &amp;amp;&amp;amp; mysql --defaults-extra-file=$credfile -e &amp;quot;drop database dspam&amp;quot; \&lt;br /&gt;
               &amp;amp;&amp;amp; echo &amp;quot;dspam db saved to dspam.sql and dropped...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Create dspam with correct permissions&lt;br /&gt;
 echo &amp;quot;Creating Dspam database...&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create dspam&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Adding dspam users and privileges...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER dspam@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON dspam.* TO dspam@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 echo &amp;quot;Done with dspam database...&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile dspam &amp;lt; dspamdb.sql&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 # End DSpam DB install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Rspam Installation:&lt;br /&gt;
 wget https://rspamd.com/rpm-stable/centos-$rel/rspamd.repo -O /etc/yum.repos.d/rspamd.repo&lt;br /&gt;
&lt;br /&gt;
 dnf $FEDORAREPO --enablerepo=qmt-devel install dspam dspam-libs dspam-client dspam-mysql dspam-web rspamd&lt;br /&gt;
 systemctl enable --now dspam&lt;br /&gt;
 systemctl status dspam&lt;br /&gt;
 systemctl enable --now rspamd&lt;br /&gt;
 systemctl status rspamd&lt;br /&gt;
&lt;br /&gt;
 # Update Simscan&lt;br /&gt;
 dnf --enablerepo=qmt-devel update simscan&lt;br /&gt;
&lt;br /&gt;
 # Up qmail limits&lt;br /&gt;
 sed -i &#039;s/softlimit -m.*\\/softlimit -m 256000000 \\/&#039; /var/qmail/supervise/smtp/run&lt;br /&gt;
 qmailctl stop&lt;br /&gt;
 qmailctl start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SA user prefs&lt;br /&gt;
&lt;br /&gt;
 # Create SA DB and load table into MySQL&lt;br /&gt;
 cat &amp;gt;&amp;gt; ./sadb.sql &amp;lt;&amp;lt; EOF&lt;br /&gt;
 CREATE TABLE userpref (&lt;br /&gt;
  username varchar(100) NOT NULL default &#039;&#039;,&lt;br /&gt;
  preference varchar(50) NOT NULL default &#039;&#039;,&lt;br /&gt;
  value varchar(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
  prefid int(11) NOT NULL auto_increment,&lt;br /&gt;
  ts timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),&lt;br /&gt;
  PRIMARY KEY  (prefid),&lt;br /&gt;
  KEY username (username)&lt;br /&gt;
 ) ENGINE=InnoDB;&lt;br /&gt;
 EOF&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile create spamassassin&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER spamassassin@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
 mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON spamassassin.* TO spamassassin@localhost&amp;quot;&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile reload&lt;br /&gt;
 mysqladmin --defaults-extra-file=$credfile refresh&lt;br /&gt;
 mysql --defaults-extra-file=$credfile spamassassin &amp;lt; sadb.sql&lt;br /&gt;
&lt;br /&gt;
 # Read SA SQL DB&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/sql.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 user_scores_dsn                  DBI:mysql:spamassassin:localhost:3306&lt;br /&gt;
 user_scores_sql_password         p4ssw3rd&lt;br /&gt;
 user_scores_sql_username         spamassassin&lt;br /&gt;
 user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = &#039;$GLOBAL&#039; OR username = &lt;br /&gt;
 CONCAT(&#039;%&#039;,_DOMAIN_) ORDER BY username ASC&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include sql.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
&lt;br /&gt;
 # Add Per User Settings in SA SQL DB (Yours may differ)&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;\$GLOBAL&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;user@dom.com&#039;,&#039;required_hits&#039;,&#039;7.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;INSERT INTO userpref (username,preference,value) VALUES (&#039;globalspam&#039;,&#039;required_hits&#039;,&#039;5.0&#039;);&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
 echo &amp;quot;select * from userpref&amp;quot; | mysql -u root -p spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Tell SA Daemon To Use SQL DB&lt;br /&gt;
 sed -i &#039;s/SPAMDOPTIONS=&amp;quot;.*&amp;quot;/SPAMDOPTIONS=&amp;quot;--create-prefs -m10 -q -x -u clamscan&amp;quot;/&#039; /etc/sysconfig/spamassassin&lt;br /&gt;
&lt;br /&gt;
 # Bayesian Filtering&lt;br /&gt;
 mkdir /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 chown -R clamscan:clamscan /etc/mail/spamassassin/.spamassassin&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/mail/spamassassin/bayes.cf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 bayes_path /etc/mail/spamassassin/.spamassassin/bayes&lt;br /&gt;
 bayes_auto_learn_threshold_spam 6.0&lt;br /&gt;
 bayes_file_mode 0775&lt;br /&gt;
 EOF&lt;br /&gt;
 echo &amp;quot;include bayes.cf&amp;quot; &amp;gt;&amp;gt; /etc/mail/spamassassin/local.cf&lt;br /&gt;
 systemctl restart spamassassin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Tell simscan, append to simcontrol, reload cdb&lt;br /&gt;
 dspam=yes,rspam=yes,regex&lt;br /&gt;
 optional: dspamuser=globalspam (Otherwise the first envelope &#039;rcpt to&#039; address is used)&lt;br /&gt;
 optional: spamuser=globalspam (Add to userprefs table)&lt;br /&gt;
 optional: remove spam_hits=* (Otherwise userprefs will not be used)&lt;br /&gt;
 qmailctl cdb&lt;br /&gt;
&lt;br /&gt;
 # This is my configuration:&lt;br /&gt;
 :clam=yes,spam=yes,rspam=yes,dspam=yes,spam_passthru=yes,attach=.exe:.pif:.scr&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1607</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1607"/>
		<updated>2025-08-21T16:35:32Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.12 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1606</id>
		<title>Rocky, Alma, Springdale 10 QT Install</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Rocky,_Alma,_Springdale_10_QT_Install&amp;diff=1606"/>
		<updated>2025-08-21T16:34:40Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: Created page with &amp;quot;Back&amp;lt;br&amp;gt; =Enterprise Linux 10 Minimal Install=  ==QMT Install (&amp;#039;Many-Domain&amp;#039;)==   &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install     &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;  Status of toaster services  send: up (pid 1323) 15...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main_Page#RHEL_10_&amp;amp;_Derivatives|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
=Enterprise Linux 10 Minimal Install= &lt;br /&gt;
==QMT Install (&#039;Many-Domain&#039;)== &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; curl -o /usr/local/bin/qt_install https://raw.githubusercontent.com/qmtoaster/scripts/master/qt_install_el10.sh&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; chmod 755 /usr/local/bin/qt_install&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; qt_install&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; ...installing... &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; toaststat&amp;lt;br&amp;gt;&lt;br /&gt;
 Status of toaster services&lt;br /&gt;
 send: up (pid 1323) 1517 seconds&lt;br /&gt;
 smtp: up (pid 1324) 1517 seconds&lt;br /&gt;
 submission: up (pid 1325) 1517 seconds&lt;br /&gt;
 send/log: up (pid 1316) 1517 seconds&lt;br /&gt;
 smtp/log: up (pid 1311) 1517 seconds&lt;br /&gt;
 submission/log: up (pid 1314) 1517 seconds&amp;lt;br&amp;gt;&lt;br /&gt;
 systemd service:               clamd@scan:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:         clamav-freshclam:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:             spamassassin:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  dovecot:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  mariadb:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    httpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    named:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     ntpd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                     sshd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                  network:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    crond:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                    acpid:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                      atd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   autofs:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:                   smartd:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;]&lt;br /&gt;
 systemd service:               irqbalance:       [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; OK &amp;lt;/span&amp;gt;] (Multiple processors only)&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; [https://raw.githubusercontent.com/qmtoaster/scripts/master/conntest conntest]&lt;br /&gt;
 Enter a valid remote email account to which QMT will send mail: &amp;lt;email address&amp;gt;&lt;br /&gt;
 IMAPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 Submission: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
 SMTPS: postmaster@domain.tld --&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;success&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Simscan Scanners]&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Alias_Domains Many Domain Install (Alias Domain)]&lt;br /&gt;
 Qmail-1.03-3.3.11 (OpenSSL3)&lt;br /&gt;
 [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Patches] applied&lt;br /&gt;
&lt;br /&gt;
== Install certificate ==&lt;br /&gt;
  [[Certificate]] *Note: The certificate must be 2048 bits or more&lt;br /&gt;
== Test certificate ==&lt;br /&gt;
  # curl --verbose smtps://mail.domain.tld&lt;br /&gt;
  # curl --verbose imaps://mail.domain.tld&lt;br /&gt;
or&lt;br /&gt;
  # openssl s_client mail.domain.tld:465&lt;br /&gt;
  # openssl s_client mail.domain.tld:993 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Server certificate:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subject: CN=mail.domain.tld&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  start date: Jul 30 09:16:16 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  expire date: Oct 28 09:16:15 2024 GMT&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  subjectAltName: host &amp;quot;mail.domain.tld&amp;quot; matched cert&#039;s &amp;quot;mail.domain.tld&amp;quot;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  issuer: C=US; O=Let&#039;s Encrypt; CN=R11&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;  SSL certificate verify ok.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the following error is encountered when testing the new certificate the certificate is most likely less than 2048 bits&lt;br /&gt;
&lt;br /&gt;
 806B7387577F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:354&lt;br /&gt;
&lt;br /&gt;
Usually Let&#039;s Encrypt certificates are at least 2048 bits, but encountering 256 bits keys is possible. Correct by specifying the number of bits:&lt;br /&gt;
&lt;br /&gt;
 certbot renew --cert-name -d domain.tld -d mail.domain.tld --apache &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;--rsa-key-size 2048 --key-type rsa&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Main_Page&amp;diff=1605</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Main_Page&amp;diff=1605"/>
		<updated>2025-08-21T16:32:29Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to Qmailtoaster&#039;s Wiki page.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Welcome to the Qmailtoaster wiki. Qmailtoaster is designed to be very stable and easy enough to install that even an inexperienced Linux user can install, operate, and maintain a full blown Qmail MTA. &lt;br /&gt;
&lt;br /&gt;
Everyone is encouraged to find ways to improve Qmailtoaster and to pass their knowledge on to others via the wiki and the [mailto:qmailtoaster-list-subscribe@qmailtoaster.com email list]. &lt;br /&gt;
&lt;br /&gt;
This wiki is maintained by Eric Broch and the rest of the Qmailtoaster community as a means of providing a centralized location for assisting all Qmailtoaster users.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
QmaitToaster was conceived by Miguel Beccari in June 2002. At the time, Miguel was an IT for Clikka.Com in Udine Italy. Miguel&#039;s goals were to provide a very stable rpm based Qmail MTA, and to build a &amp;quot;Qmailtoaster&amp;quot; community of users to support and develop the Qmailtoaster project. &lt;br /&gt;
&lt;br /&gt;
=== Subsequent QmailToaster Maintainers ===&lt;br /&gt;
&lt;br /&gt;
2003-2007, Nick Hemmesch&lt;br /&gt;
&lt;br /&gt;
2006-2007, Erik Espinoza&lt;br /&gt;
&lt;br /&gt;
2007-2011, Jake Vickers&lt;br /&gt;
&lt;br /&gt;
2011-2014, Eric Shubert&lt;br /&gt;
&lt;br /&gt;
2014-Present, Eric Broch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For details on the evolution of the various QMailtoaster packages, see the [[Change Logs]].&lt;br /&gt;
&lt;br /&gt;
=== Credits ===&lt;br /&gt;
&#039;&#039;&#039;QMAIL&#039;&#039;&#039; D. J. Bernstein (http://cr.yp.to/qmail.html)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAEMONTOOLS&#039;&#039;&#039; D. J. Bernstein (http://cr.yp.to/daemontools.html)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UCSPI-TCP&#039;&#039;&#039; D. J. Bernstein (http://cr.yp.to/ucspi-tcp.html)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EZMLM&#039;&#039;&#039; (http://www.ezmlm.org)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VPOPMAIL&#039;&#039;&#039; (http://www.inter7.com/vpopmail)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QMAILADMIN&#039;&#039;&#039; (http://www.inter7.com/qmailadmin)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VQADMIN&#039;&#039;&#039; (http://www.inter7.com/vqadmin)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QMAILMRTG&#039;&#039;&#039; (http://www.inter7.com/qmailmrtg7)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DOVECOT&#039;&#039;&#039; (https://www.dovecot.org/)&lt;br /&gt;
&lt;br /&gt;
== [[FAQs]] ==&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
* RPM packages for RHEL 7/8/9 &amp;amp; derivatives (Rocky, Alma, &amp;amp; Springdale)&lt;br /&gt;
* DKIM, SPF and SRS&lt;br /&gt;
* Integrated ClamAV, DSPAM, Rspam, Spamassassin, ClamAV.&lt;br /&gt;
* Warlord virus and worm loader realtime MIME signature scanning&lt;br /&gt;
* CHKUSER 2.0 functions for qmail-smtpd&lt;br /&gt;
* Qmail-Tap provides email archive capability&lt;br /&gt;
* Virtual Domains and Virtual Users using MySQL&lt;br /&gt;
* Autoresponder for vacation/away from office messages&lt;br /&gt;
* Integrated Mailing List (ezmlm)&lt;br /&gt;
* Web-based email: Squirrelmail, Roundcube, Afterlogic, Rainloop.&lt;br /&gt;
* Web-based admin: QmailAdmin&lt;br /&gt;
* Dovecot: POP3, POP3-SSL, IMAP and IMAP-SSL&lt;br /&gt;
* Submission port (587) allows roaming users to skip RBL checks and port 25 blocks&lt;br /&gt;
* SMTPS port (465)&lt;br /&gt;
* eMPF patch for advanced policy control over email&lt;br /&gt;
&lt;br /&gt;
=== Additional Resources ===&lt;br /&gt;
&lt;br /&gt;
You have found the wiki, congratulations. There is a lot of good information here.&lt;br /&gt;
&lt;br /&gt;
There is a [http://www.mail-archive.com/qmailtoaster-list@qmailtoaster.com/info.html mailing list] which is a good source for help.&lt;br /&gt;
&lt;br /&gt;
The [http://www.mail-archive.com/qmailtoaster-list@qmailtoaster.com/info.html mailing list] has a [http://www.mail-archive.com/qmailtoaster-list@qmailtoaster.com/ searchable archive], and it is available for searching and news access as well from [http://dir.gmane.org/gmane.mail.qmail.toaster gmane.org]. Many questions have been answered in the archive, so please do some searching before asking a question on the list.&lt;br /&gt;
&lt;br /&gt;
There is the chat room #qmailtoaster at irc.freenode.net. You might find help there.&lt;br /&gt;
&lt;br /&gt;
There is a good graphic titled [http://www.nrg4u.com/ THE BIG Qmail PICTURE] available in several formats that explains how qmail works.  The author  does not indicate that is free to distribute, however it is free for personal use.  Get a copy for yourself, as it is a handy reference.&lt;br /&gt;
&lt;br /&gt;
Also grab a copy of Sills&#039; [http://www.lifewithqmail.org/ Life with qmail] in whatever format you choose.  It too is a valuable reference.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== RHEL 7 &amp;amp; Derivatives ===&lt;br /&gt;
 [[CentOS 7 QT Install]]&lt;br /&gt;
&#039;&#039;&#039;Patch&#039;&#039;&#039; [https://github.com/qmtoaster/patches/blob/master/cos7/README.md Current] [https://github.com/qmtoaster/patches/tree/master/cos7/3.3.11 Current MD OpenSSL111]&lt;br /&gt;
&lt;br /&gt;
=== RHEL 8 &amp;amp; Derivatives ===&lt;br /&gt;
 [[Rocky, Alma, Springdale 8 QT Install]]&lt;br /&gt;
&#039;&#039;&#039;Patch&#039;&#039;&#039; [https://github.com/qmtoaster/patches/blob/master/EL9/README.md Testing]&lt;br /&gt;
&lt;br /&gt;
=== RHEL 9 &amp;amp; Derivatives ===&lt;br /&gt;
 [[Rocky, Alma, Springdale 9 QT Install]]&lt;br /&gt;
&#039;&#039;&#039;Patch&#039;&#039;&#039; [https://github.com/qmtoaster/patches/tree/master/EL9 Testing]&lt;br /&gt;
&lt;br /&gt;
=== RHEL 10 &amp;amp; Derivatives ===&lt;br /&gt;
 [[Rocky, Alma, Springdale 10 QT Install]]&lt;br /&gt;
&#039;&#039;&#039;Patch&#039;&#039;&#039; [https://github.com/qmtoaster/patches/tree/master/EL9 Testing] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Configuration]] ==&lt;br /&gt;
&lt;br /&gt;
== [[http://qtp.qmailtoaster.com/ QmailToaster-Plus]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Migrate]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Backup]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Troubleshooting]] ==&lt;br /&gt;
&lt;br /&gt;
== [[User Tips &amp;amp; Tricks]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Change Logs]] ==&lt;br /&gt;
&lt;br /&gt;
== [[QMT Wiki]] ==&lt;br /&gt;
&lt;br /&gt;
== Modifications ==&lt;br /&gt;
=== [[Groupware]]===&lt;br /&gt;
=== [[Webmail]]===&lt;br /&gt;
=== [[Calendar]]===&lt;br /&gt;
=== [[ActiveSync (Z-push)]]===&lt;br /&gt;
== [[Wish List]] ==&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Vconvert_Backend&amp;diff=1604</id>
		<title>Vconvert Backend</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Vconvert_Backend&amp;diff=1604"/>
		<updated>2025-06-17T00:40:42Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Migrate|Back]]&lt;br /&gt;
 &#039;&#039;&#039;Migrate&#039;&#039;&#039;&lt;br /&gt;
 [[EL7_to_EL_8_or_9|Instructions]] &lt;br /&gt;
&lt;br /&gt;
 1) On destination host&lt;br /&gt;
 # Convert vpasswd files to mysql vpopmail db, aliases must be handled manually&lt;br /&gt;
 /home/vpopmail/bin/vconvert -c -m&lt;br /&gt;
 qmailctl cdb &amp;amp;&amp;amp; qmailctl start &amp;amp;&amp;amp; sleep 2s &amp;amp;&amp;amp; systemctl start dovecot &amp;amp;&amp;amp; toaststat&lt;br /&gt;
&lt;br /&gt;
 2) In place conversion*&lt;br /&gt;
 # qmailctl stop &amp;amp;&amp;amp; systemctl stop dovecot&lt;br /&gt;
 # yum install -y yum-utils&lt;br /&gt;
 # yum-config-manager --enable qmt-current&lt;br /&gt;
 # yum reinstall qmail qmailadmin dovecot* ezmlm* vpopmail vqadmin&lt;br /&gt;
 # /home/vpopmail/bin/vconvert -c -m&lt;br /&gt;
 # qmailctl start &amp;amp;&amp;amp; sleep 2s &amp;amp;&amp;amp; systemctl start dovecot &amp;amp;&amp;amp; toaststat&lt;br /&gt;
 * Aliases must be done manually.&lt;br /&gt;
   Will convert to many domain format if &lt;br /&gt;
   vpopamil was compiled with this option&lt;br /&gt;
&lt;br /&gt;
 Questions, comments, suggestions, corrections...contact Eric on the QMT list&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Vconvert_Backend&amp;diff=1603</id>
		<title>Vconvert Backend</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Vconvert_Backend&amp;diff=1603"/>
		<updated>2025-06-17T00:40:23Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Migrate|Back]]&lt;br /&gt;
 &#039;&#039;&#039;Migrate&#039;&#039;&#039;&lt;br /&gt;
 [[EL7_to_EL_8_or_9|Instructions]] &lt;br /&gt;
&lt;br /&gt;
 1) On destination host&lt;br /&gt;
 # Convert vpasswd files to mysql vpopmail db, aliases must be handled manually&lt;br /&gt;
 /home/vpopmail/bin/vconvert -c -m&lt;br /&gt;
 qmailctl cdb &amp;amp;&amp;amp; qmailctl start &amp;amp;&amp;amp; sleep 2s &amp;amp;&amp;amp; systemctl start dovecot &amp;amp;&amp;amp; toaststat&lt;br /&gt;
&lt;br /&gt;
 2) In place conversion*&lt;br /&gt;
&lt;br /&gt;
 # qmailctl stop &amp;amp;&amp;amp; systemctl stop dovecot&lt;br /&gt;
 # yum install -y yum-utils&lt;br /&gt;
 # yum-config-manager --enable qmt-current&lt;br /&gt;
 # yum reinstall qmail qmailadmin dovecot* ezmlm* vpopmail vqadmin&lt;br /&gt;
 # /home/vpopmail/bin/vconvert -c -m&lt;br /&gt;
 # qmailctl start &amp;amp;&amp;amp; sleep 2s &amp;amp;&amp;amp; systemctl start dovecot &amp;amp;&amp;amp; toaststat&lt;br /&gt;
 * Aliases must be done manually.&lt;br /&gt;
   Will convert to many domain format if &lt;br /&gt;
   vpopamil was compiled with this option&lt;br /&gt;
&lt;br /&gt;
 Questions, comments, suggestions, corrections...contact Eric on the QMT list&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1602</id>
		<title>Roundcube</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1602"/>
		<updated>2025-03-26T20:25:19Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Webmail|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
 EL 8 &amp;amp; 9 should already have roundcubemail installed, otherwise...&lt;br /&gt;
  # dnf -y install epel-release&lt;br /&gt;
  # dnf config-manager --set-enabled powertools&lt;br /&gt;
  # dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
  # dnf -y module reset php&lt;br /&gt;
  # dnf module install php:remi-8.1&lt;br /&gt;
  # yum -y install git yum-utils epel-release php-mysql roundcubemail&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;create database roundcube character set utf8 collate utf8_bin&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER roundcube@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile roundcube &amp;lt; /usr/share/roundcubemail/SQL/mysql.initial.sql&lt;br /&gt;
  # cp -p /etc/httpd/conf.d/roundcubemail.conf /etc/httpd/conf.d/roundcubemail.conf.bak&lt;br /&gt;
  # wget -O /etc/roundcubemail/config.inc.php http://www.qmailtoaster.org/rc.default.config.rhelgt7&lt;br /&gt;
  # wget -O /etc/httpd/conf.d/roundcubemail.conf http://www.qmailtoaster.org/rc.httpd.config&lt;br /&gt;
  # sed -i &#039;s/\;date.timezone.*/date.timezone = &amp;quot;America\/Denver&amp;quot;/&#039; /etc/php.ini | sleep 2 | cat /etc/php.ini | grep date.timezone.*=&lt;br /&gt;
  # systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
 Access https://my.roundcube.server/email&lt;br /&gt;
&lt;br /&gt;
 Add password support [http://wiki.qmailtoaster.org/index.php?title=Vpopmail_daemon Daemonize vpopmail]&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config&lt;br /&gt;
&lt;br /&gt;
 Add password support MySQL&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  (Many domain)&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysqlmd&lt;br /&gt;
  (Domain table&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysqldt&lt;br /&gt;
&lt;br /&gt;
 Add Carddav (Everyone should logout of roundcube at this point)&lt;br /&gt;
  # cd /usr/share/roundcubemail/plugins&lt;br /&gt;
  # git clone https://github.com/blind-coder/rcmcarddav carddav&lt;br /&gt;
  # cd carddav&lt;br /&gt;
  # curl -sS https://getcomposer.org/installer | php&lt;br /&gt;
  # php composer.phar install&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;carddav\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
   perl -ni -le &#039;BEGIN{ $q=chr(39), $cd=&amp;quot;carddav&amp;quot; } print; print &amp;quot; $q$cd$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
   /etc/roundcubemail/config.inc.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Vpopmail_daemon&amp;diff=1601</id>
		<title>Vpopmail daemon</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Vpopmail_daemon&amp;diff=1601"/>
		<updated>2025-03-26T20:10:17Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Vpopmail|Back]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /var/qmail/supervise&lt;br /&gt;
# install -d -m1751 vpopmaild &amp;amp;&amp;amp; chmod 1700  vpopmaild &amp;amp;&amp;amp; chown qmaill:qmail vpopmaild &amp;amp;&amp;amp; install -d -m751 vpopmaild/log &amp;amp;&amp;amp; chmod 0700  vpopmaild/log&lt;br /&gt;
# printf &#039;%s\n&#039; \&lt;br /&gt;
&#039;#!/bin/sh&#039; \&lt;br /&gt;
&#039;QMAILDUID=`id -u vpopmail`&#039; \&lt;br /&gt;
&#039;NOFILESGID=`id -g vpopmail`&#039; \&lt;br /&gt;
&#039;VPOPD=/home/vpopmail/bin/vpopmaild&#039; \&lt;br /&gt;
&#039;&#039; \&lt;br /&gt;
&#039;exec 2&amp;gt;&amp;amp;1&#039; &#039;exec /usr/bin/tcpserver -vRHD -u &amp;quot;$QMAILDUID&amp;quot; -g &amp;quot;$NOFILESGID&amp;quot; 127.0.0.1 89 $VPOPD&#039; \&lt;br /&gt;
&amp;gt;./vpopmaild/run&lt;br /&gt;
&lt;br /&gt;
# printf &#039;%s\n&#039; \&lt;br /&gt;
&#039;#!/bin/sh&#039; \&lt;br /&gt;
&#039;LOGSIZE=`cat /var/qmail/control/logsize`&#039; \&lt;br /&gt;
&#039;LOGCOUNT=`cat /var/qmail/control/logcount`&#039; \&lt;br /&gt;
&#039;exec /usr/bin/setuidgid qmaill \&#039; \&lt;br /&gt;
&#039;     /usr/bin/multilog t s$LOGSIZE n$LOGCOUNT \&#039; \&lt;br /&gt;
&#039;     /var/log/qmail/vpopmaild 2&amp;gt;&amp;amp;1&#039; \&lt;br /&gt;
&amp;gt; ./vpopmaild/log/run&lt;br /&gt;
&lt;br /&gt;
# chown -R qmaill:qmail vpopmaild &amp;amp;&amp;amp; chmod 0751 ./vpopmaild/run &amp;amp;&amp;amp; chmod 0751 ./vpopmaild/log/run&lt;br /&gt;
# firewall-cmd --zone=public --add-port=89/tcp --permanent &amp;amp;&amp;amp; firewall-cmd --reload&lt;br /&gt;
# qmailctl stop &amp;amp;&amp;amp; sleep 2 &amp;amp;&amp;amp; qmailctl start&lt;br /&gt;
# yum -y install telnet&lt;br /&gt;
# telnet 127.0.0.1 89&lt;br /&gt;
Trying 127.0.0.1...&lt;br /&gt;
Connected to 127.0.0.1.&lt;br /&gt;
Escape character is &#039;^]&#039;.&lt;br /&gt;
+OK&lt;br /&gt;
quit&lt;br /&gt;
+OK&lt;br /&gt;
Connection closed by foreign host.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1600</id>
		<title>Roundcube</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1600"/>
		<updated>2025-03-26T20:09:01Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Webmail|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
 EL 8 &amp;amp; 9 should already have roundcubemail installed, otherwise...&lt;br /&gt;
  # dnf -y install epel-release&lt;br /&gt;
  # dnf config-manager --set-enabled powertools&lt;br /&gt;
  # dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
  # dnf -y module reset php&lt;br /&gt;
  # dnf module install php:remi-8.1&lt;br /&gt;
  # yum -y install git yum-utils epel-release php-mysql roundcubemail&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;create database roundcube character set utf8 collate utf8_bin&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER roundcube@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile roundcube &amp;lt; /usr/share/roundcubemail/SQL/mysql.initial.sql&lt;br /&gt;
  # cp -p /etc/httpd/conf.d/roundcubemail.conf /etc/httpd/conf.d/roundcubemail.conf.bak&lt;br /&gt;
  # wget -O /etc/roundcubemail/config.inc.php http://www.qmailtoaster.org/rc.default.config.rhelgt7&lt;br /&gt;
  # wget -O /etc/httpd/conf.d/roundcubemail.conf http://www.qmailtoaster.org/rc.httpd.config&lt;br /&gt;
  # sed -i &#039;s/\;date.timezone.*/date.timezone = &amp;quot;America\/Denver&amp;quot;/&#039; /etc/php.ini | sleep 2 | cat /etc/php.ini | grep date.timezone.*=&lt;br /&gt;
  # systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
 Access https://my.roundcube.server/email&lt;br /&gt;
&lt;br /&gt;
 Add password support [http://wiki.qmailtoaster.org/index.php?title=Vpopmail_daemon Daemonize vpopmail]&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config&lt;br /&gt;
&lt;br /&gt;
 Add password support MySQL&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  (Many domain)&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysql&lt;br /&gt;
  (Domain table&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysql.2&lt;br /&gt;
&lt;br /&gt;
 Add Carddav (Everyone should logout of roundcube at this point)&lt;br /&gt;
  # cd /usr/share/roundcubemail/plugins&lt;br /&gt;
  # git clone https://github.com/blind-coder/rcmcarddav carddav&lt;br /&gt;
  # cd carddav&lt;br /&gt;
  # curl -sS https://getcomposer.org/installer | php&lt;br /&gt;
  # php composer.phar install&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;carddav\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
   perl -ni -le &#039;BEGIN{ $q=chr(39), $cd=&amp;quot;carddav&amp;quot; } print; print &amp;quot; $q$cd$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
   /etc/roundcubemail/config.inc.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1599</id>
		<title>Roundcube</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1599"/>
		<updated>2025-03-26T20:08:17Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Webmail|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
 EL 8 &amp;amp; 9 should already have roundcubemail installed, otherwise...&lt;br /&gt;
  # dnf -y install epel-release&lt;br /&gt;
  # dnf config-manager --set-enabled powertools&lt;br /&gt;
  # dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
  # dnf -y module reset php&lt;br /&gt;
  # dnf module install php:remi-8.1&lt;br /&gt;
  # yum -y install git yum-utils epel-release php-mysql roundcubemail&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;create database roundcube character set utf8 collate utf8_bin&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER roundcube@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile roundcube &amp;lt; /usr/share/roundcubemail/SQL/mysql.initial.sql&lt;br /&gt;
  # cp -p /etc/httpd/conf.d/roundcubemail.conf /etc/httpd/conf.d/roundcubemail.conf.bak&lt;br /&gt;
  # wget -O /etc/roundcubemail/config.inc.php http://www.qmailtoaster.org/rc.default.config.rhelgt7&lt;br /&gt;
  # wget -O /etc/httpd/conf.d/roundcubemail.conf http://www.qmailtoaster.org/rc.httpd.config&lt;br /&gt;
  # sed -i &#039;s/\;date.timezone.*/date.timezone = &amp;quot;America\/Denver&amp;quot;/&#039; /etc/php.ini | sleep 2 | cat /etc/php.ini | grep date.timezone.*=&lt;br /&gt;
  # systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
 Access https://my.roundcube.server/email&lt;br /&gt;
&lt;br /&gt;
 Add password support [http://wiki.qmailtoaster.org/index.php?title=Vpopmail_daemon Daemonize vpopmail]&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config&lt;br /&gt;
&lt;br /&gt;
 Add password support mysql&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  (Many domain)&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysql&lt;br /&gt;
  (Domain table&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysql.2&lt;br /&gt;
&lt;br /&gt;
 Add Carddav (Everyone should logout of roundcube at this point)&lt;br /&gt;
  # cd /usr/share/roundcubemail/plugins&lt;br /&gt;
  # git clone https://github.com/blind-coder/rcmcarddav carddav&lt;br /&gt;
  # cd carddav&lt;br /&gt;
  # curl -sS https://getcomposer.org/installer | php&lt;br /&gt;
  # php composer.phar install&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;carddav\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
   perl -ni -le &#039;BEGIN{ $q=chr(39), $cd=&amp;quot;carddav&amp;quot; } print; print &amp;quot; $q$cd$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
   /etc/roundcubemail/config.inc.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1598</id>
		<title>Roundcube</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1598"/>
		<updated>2025-03-26T20:07:01Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Webmail|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
 EL 8 &amp;amp; 9 should already have roundcubemail installed, otherwise...&lt;br /&gt;
  # dnf -y install epel-release&lt;br /&gt;
  # dnf config-manager --set-enabled powertools&lt;br /&gt;
  # dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
  # dnf -y module reset php&lt;br /&gt;
  # dnf module install php:remi-8.1&lt;br /&gt;
  # yum -y install git yum-utils epel-release php-mysql roundcubemail&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;create database roundcube character set utf8 collate utf8_bin&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER roundcube@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile roundcube &amp;lt; /usr/share/roundcubemail/SQL/mysql.initial.sql&lt;br /&gt;
  # cp -p /etc/httpd/conf.d/roundcubemail.conf /etc/httpd/conf.d/roundcubemail.conf.bak&lt;br /&gt;
  # wget -O /etc/roundcubemail/config.inc.php http://www.qmailtoaster.org/rc.default.config.rhelgt7&lt;br /&gt;
  # wget -O /etc/httpd/conf.d/roundcubemail.conf http://www.qmailtoaster.org/rc.httpd.config&lt;br /&gt;
  # sed -i &#039;s/\;date.timezone.*/date.timezone = &amp;quot;America\/Denver&amp;quot;/&#039; /etc/php.ini | sleep 2 | cat /etc/php.ini | grep date.timezone.*=&lt;br /&gt;
  # systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
 Access https://my.roundcube.server/email&lt;br /&gt;
&lt;br /&gt;
 Add password support vpopmail daemon&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Vpopmail_daemon Enable vpopmaild]&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config&lt;br /&gt;
&lt;br /&gt;
 Add password support mysql&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  (Many domain)&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysql&lt;br /&gt;
  (Domain table&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysql.2&lt;br /&gt;
&lt;br /&gt;
 Add Carddav (Everyone should logout of roundcube at this point)&lt;br /&gt;
  # cd /usr/share/roundcubemail/plugins&lt;br /&gt;
  # git clone https://github.com/blind-coder/rcmcarddav carddav&lt;br /&gt;
  # cd carddav&lt;br /&gt;
  # curl -sS https://getcomposer.org/installer | php&lt;br /&gt;
  # php composer.phar install&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;carddav\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
   perl -ni -le &#039;BEGIN{ $q=chr(39), $cd=&amp;quot;carddav&amp;quot; } print; print &amp;quot; $q$cd$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
   /etc/roundcubemail/config.inc.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1597</id>
		<title>Roundcube</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Roundcube&amp;diff=1597"/>
		<updated>2025-03-26T20:06:42Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Webmail|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
 EL 8 &amp;amp; 9 should already have roundcubemail installed, otherwise...&lt;br /&gt;
  # dnf -y install epel-release&lt;br /&gt;
  # dnf config-manager --set-enabled powertools&lt;br /&gt;
  # dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
  # dnf -y module reset php&lt;br /&gt;
  # dnf module install php:remi-8.1&lt;br /&gt;
  # yum -y install git yum-utils epel-release php-mysql roundcubemail&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;create database roundcube character set utf8 collate utf8_bin&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;CREATE USER roundcube@localhost IDENTIFIED BY &#039;p4ssw3rd&#039;&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile -e &amp;quot;GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost&amp;quot;&lt;br /&gt;
  # mysql --defaults-extra-file=$credfile roundcube &amp;lt; /usr/share/roundcubemail/SQL/mysql.initial.sql&lt;br /&gt;
  # cp -p /etc/httpd/conf.d/roundcubemail.conf /etc/httpd/conf.d/roundcubemail.conf.bak&lt;br /&gt;
  # wget -O /etc/roundcubemail/config.inc.php http://www.qmailtoaster.org/rc.default.config.rhelgt7&lt;br /&gt;
  # wget -O /etc/httpd/conf.d/roundcubemail.conf http://www.qmailtoaster.org/rc.httpd.config&lt;br /&gt;
  # sed -i &#039;s/\;date.timezone.*/date.timezone = &amp;quot;America\/Denver&amp;quot;/&#039; /etc/php.ini | sleep 2 | cat /etc/php.ini | grep date.timezone.*=&lt;br /&gt;
  # systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
 Access https://my.roundcube.server/email&lt;br /&gt;
&lt;br /&gt;
 Add password support vpopmail daemon&lt;br /&gt;
 [http://wiki.qmailtoaster.org/index.php?title=Vpopmail_daemon Enable vpopmaild]&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config&lt;br /&gt;
&lt;br /&gt;
Add password support mysql&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;password\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
      perl -ni -le &#039;BEGIN{ $q=chr(39), $pw=&amp;quot;password&amp;quot; } print; print &amp;quot; $q$pw$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
      /etc/roundcubemail/config.inc.php&lt;br /&gt;
  (Many domain)&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysql&lt;br /&gt;
  (Domain table&lt;br /&gt;
  # wget -O /usr/share/roundcubemail/plugins/password/config.inc.php http://www.qmailtoaster.org/rc.password.config.mysql.2&lt;br /&gt;
&lt;br /&gt;
 Add Carddav (Everyone should logout of roundcube at this point)&lt;br /&gt;
  # cd /usr/share/roundcubemail/plugins&lt;br /&gt;
  # git clone https://github.com/blind-coder/rcmcarddav carddav&lt;br /&gt;
  # cd carddav&lt;br /&gt;
  # curl -sS https://getcomposer.org/installer | php&lt;br /&gt;
  # php composer.phar install&lt;br /&gt;
  # [ &amp;quot;`grep \&#039;carddav\&#039;, /etc/roundcubemail/config.inc.php`&amp;quot; = &amp;quot;&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
   perl -ni -le &#039;BEGIN{ $q=chr(39), $cd=&amp;quot;carddav&amp;quot; } print; print &amp;quot; $q$cd$q,&amp;quot; if /$config.*&#039;plugins&#039;.*=.*array/&#039; \&lt;br /&gt;
   /etc/roundcubemail/config.inc.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1596</id>
		<title>Dovecot Active Directory Authentication</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1596"/>
		<updated>2025-01-26T23:43:01Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Dovecot_LDAP_Authentication|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assumes working AD server&lt;br /&gt;
&lt;br /&gt;
 # cd /etc/dovecot&lt;br /&gt;
 # cat &amp;gt;  dovecot-ldap.conf.ext &amp;lt;&amp;lt; __EOF__&lt;br /&gt;
 hosts = ad.domain.tld&lt;br /&gt;
 ldap_version = 3&lt;br /&gt;
 base = dc=domain,dc=tld&lt;br /&gt;
 auth_bind_userdn = %u&lt;br /&gt;
 auth_bind = yes&lt;br /&gt;
 __EOF__&lt;br /&gt;
&lt;br /&gt;
Change passdb; userdb untouched&lt;br /&gt;
 # Authenticates by AD server&lt;br /&gt;
 passdb {&lt;br /&gt;
   driver = ldap&lt;br /&gt;
   args = /etc/dovecot/dovecot-ldap.conf.ext&lt;br /&gt;
 }&lt;br /&gt;
 # Retrieves user home directory, mail directory, uid, and gid &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;
 # systemctl restart dovecot&lt;br /&gt;
&lt;br /&gt;
[[Qmail_Dovecot_Authentication|Configure QMT Dovecot authorization]]&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1595</id>
		<title>Dovecot Active Directory Authentication</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1595"/>
		<updated>2025-01-26T23:42:09Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Dovecot_LDAP_Authentication|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assumes working AD server&lt;br /&gt;
&lt;br /&gt;
 # cd /etc/dovecot&lt;br /&gt;
 # cat &amp;gt;  dovecot-ldap.conf.ext &amp;lt;&amp;lt; __EOF__&lt;br /&gt;
 hosts = ad.domain.tld&lt;br /&gt;
 ldap_version = 3&lt;br /&gt;
 base = dc=domain,dc=tld&lt;br /&gt;
 auth_bind_userdn = %u&lt;br /&gt;
 auth_bind = yes&lt;br /&gt;
 __EOF__&lt;br /&gt;
&lt;br /&gt;
 Change passdb; userdb untouched&lt;br /&gt;
 # Authenticates by AD server&lt;br /&gt;
 passdb {&lt;br /&gt;
   driver = ldap&lt;br /&gt;
   args = /etc/dovecot/dovecot-ldap.conf.ext&lt;br /&gt;
 }&lt;br /&gt;
 # Retrieves user home directory, mail directory, uid, and gid &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;
 # systemctl restart dovecot&lt;br /&gt;
&lt;br /&gt;
[[Qmail_Dovecot_Authentication|Configure QMT Dovecot authorization]]&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1594</id>
		<title>Dovecot Active Directory Authentication</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1594"/>
		<updated>2025-01-26T23:37:11Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Dovecot_LDAP_Authentication|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assumes working AD server&lt;br /&gt;
&lt;br /&gt;
 # cd /etc/dovecot&lt;br /&gt;
 # cat &amp;gt;  dovecot-ldap.conf.ext &amp;lt;&amp;lt; __EOF__&lt;br /&gt;
 hosts = ad.domain.tld&lt;br /&gt;
 ldap_version = 3&lt;br /&gt;
 base = dc=domain,dc=tld&lt;br /&gt;
 auth_bind_userdn = %u&lt;br /&gt;
 auth_bind = yes&lt;br /&gt;
 __EOF__&lt;br /&gt;
&lt;br /&gt;
Change passdb, userdb should remain the same&lt;br /&gt;
 passdb {&lt;br /&gt;
   driver = ldap&lt;br /&gt;
   args = /etc/dovecot/dovecot-ldap.conf.ext&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;
 # systemctl restart dovecot&lt;br /&gt;
&lt;br /&gt;
[[Qmail_Dovecot_Authentication|Configure QMT Dovecot authorization]]&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1593</id>
		<title>Dovecot Active Directory Authentication</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1593"/>
		<updated>2025-01-13T18:29:35Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Dovecot_LDAP_Authentication|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assumes working AD server&lt;br /&gt;
&lt;br /&gt;
 # cd /etc/dovecot&lt;br /&gt;
 # cat &amp;gt;  dovecot-ldap.conf.ext &amp;lt;&amp;lt; __EOF__&lt;br /&gt;
 hosts = ad.domain.tld&lt;br /&gt;
 ldap_version = 3&lt;br /&gt;
 base = dc=domain,dc=tld&lt;br /&gt;
 auth_bind_userdn = %u&lt;br /&gt;
 auth_bind = yes&lt;br /&gt;
 __EOF__&lt;br /&gt;
&lt;br /&gt;
 Add to /etc/dovecot.conf while commenting any other passdb and userdb settings&lt;br /&gt;
 mail_location = maildir:~/Maildir/&lt;br /&gt;
 passdb {&lt;br /&gt;
   driver = ldap&lt;br /&gt;
   args = /etc/dovecot/dovecot-ldap.conf.ext&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
   driver = static&lt;br /&gt;
   args = uid=89 gid=89 home=/home/vpopmail/domains/%d/%n&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 # systemctl restart dovecot&lt;br /&gt;
&lt;br /&gt;
[[Qmail_Dovecot_Authentication|Configure QMT Dovecot authorization]]&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1592</id>
		<title>Dovecot Active Directory Authentication</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Dovecot_Active_Directory_Authentication&amp;diff=1592"/>
		<updated>2025-01-13T18:28:30Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Dovecot_LDAP_Authentication|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assumes working AD server&lt;br /&gt;
&lt;br /&gt;
 # cd /etc/dovecot&lt;br /&gt;
 # cat &amp;gt;  dovecot-ldap.conf.ext &amp;lt;&amp;lt; __EOF__&lt;br /&gt;
 hosts = ad.domain.tld&lt;br /&gt;
 ldap_version = 3&lt;br /&gt;
 base = dc=domain,dc=tld&lt;br /&gt;
 auth_bind_userdn = %u&lt;br /&gt;
 auth_bind = yes&lt;br /&gt;
&lt;br /&gt;
 __EOF__&lt;br /&gt;
&lt;br /&gt;
 Add to /etc/dovecot.conf while commenting any other passdb and userdb settings&lt;br /&gt;
 mail_location = maildir:~/Maildir/&lt;br /&gt;
 passdb {&lt;br /&gt;
   driver = ldap&lt;br /&gt;
   args = /etc/dovecot/dovecot-ldap.conf.ext&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
   driver = static&lt;br /&gt;
   args = uid=89 gid=89 home=/home/vpopmail/domains/%d/%n&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 # systemctl restart dovecot&lt;br /&gt;
&lt;br /&gt;
[[Qmail_Dovecot_Authentication|Configure QMT Dovecot authorization]]&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
</feed>