<?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-06-14T09:09:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Spamdyke&amp;diff=1655</id>
		<title>Spamdyke</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Spamdyke&amp;diff=1655"/>
		<updated>2026-06-13T23:36:42Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: /* Statistics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#SPF|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
Spamdyke provides pre-transmission spam filtering, and should be used in addition to SpamAssassin, which provides post-transmission spam filtering. Spamdyke is available from [http://www.spamdyke.org/ the spamdyke website]. See that site for details.&lt;br /&gt;
&lt;br /&gt;
While a few of spamdyke&#039;s capabilities are already provided with the stock QMail-Toaster, spamdyke provides some additional spam fighting capabilities such as graylisting and enhanced blacklist/whitelist processing.&lt;br /&gt;
&lt;br /&gt;
Spamdyke is a program that sits between the tcpserver and qmail-smtp processes (a pipe in &#039;nix lingo), so its implementation does not require patching or recompiling of qmail.&lt;br /&gt;
&lt;br /&gt;
It is anticipated that spamdyke will become part of the stock QMail-Toaster no later than version 2, and hopefully in version 1.4. Meanwhile, here are some notes about using spamdyke with your existing QMail-Toaster.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Spamdyke is automatically installed with qmailtoaster&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
spamdyke&#039;s configuration file is located at /etc/spamdyke/spamdyke.conf.  spamdyke reads its configuration file every time a new connection is made.  For this reason, it is never necessary to restart qmail after making changes to spamdyke&#039;s configuration file.&lt;br /&gt;
&lt;br /&gt;
spamdyke&#039;s documentation provides full details on all of spamdyke&#039;s features and configuration options.  Documentation for the latest version is available here: [http://www.spamdyke.org/documentation/README.html README file]&lt;br /&gt;
&lt;br /&gt;
=== Graylisting ===&lt;br /&gt;
The install script sets up all of the domains in /var/qmail/control/rcpthosts and morercpthosts for graylisting. If you have local domains that you don&#039;t want graylisting enabled for, simply remove the associated /var/spamdyke/graylist/domain directory.&lt;br /&gt;
=== RBLs ===&lt;br /&gt;
DNS RBLs are checked by spamdyke instead of the rblsmtpd program. Check to see that the RBLs specified in your /var/qmail/control/blacklists file are included in /etc/spamdyke/spamdyke.conf as check-dnsrbl parameters.&lt;br /&gt;
=== reject-ip-in-cc-rdns ===&lt;br /&gt;
This option is commented out in the configuration file that is generated by the installation script. It is useful for most US domains, whose users rarely correspond with international addresses. To enable this option, simply uncomment it in the /etc/spamdyke/spamdyke.conf file.&lt;br /&gt;
&lt;br /&gt;
If this option is not appropriate in your situation (non-US or domains with international traffic), you might want to consider using the &amp;quot;ip-in-rdns-keyword-file&amp;quot; option instead, listing the country codes you want to filter in the /etc/spamdyke/blacklist_keywords file that is created by the installation script.&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
There are no known troubleshooting issues as of this writing. If you have any problems, contact the qmailtoaster or spamdyke email list (but please, not both).&lt;br /&gt;
== Disable ==&lt;br /&gt;
If you need to disable spamdyke, run the following commands:&lt;br /&gt;
 # cd /var/qmail/supervise/smtp&lt;br /&gt;
 # qmailctl stop&lt;br /&gt;
 # cp -p run run.spamdyke &amp;amp;&amp;amp; mv run run.nospamdyke&lt;br /&gt;
 # sed -i &#039;/$SPAMDYKE --config-file $SPAMDYKE_CONF \\/d&#039; ./run.nospamdyke&lt;br /&gt;
 # ln -s run.nospamdyke run&lt;br /&gt;
 # qmailctl start&lt;br /&gt;
&lt;br /&gt;
== Enable ==&lt;br /&gt;
 # cd /var/qmail/supervise/smtp&lt;br /&gt;
 # qmailctl stop&lt;br /&gt;
 # unlink run&lt;br /&gt;
 # ln -s run.spamdyke run&lt;br /&gt;
 # qmailctl start&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
From the [http://www.mail-archive.com/qmailtoaster-list@qmailtoaster.com/msg32310.html qmailtoaster user list archive]:&lt;br /&gt;
&lt;br /&gt;
* Create folder /usr/share/qmt/scripts&lt;br /&gt;
* You also need to create a folder called tmp in /usr/share/qmt/scripts&lt;br /&gt;
* Remember to save all scripts in the folder /usr/share/qmt/scripts&lt;br /&gt;
* Save this [https://qtp.qmailtoaster.org/bin/spamdyke-stats spamdyke-stats] script in that folder and chmod +x the filename&lt;br /&gt;
  # wget -P /usr/local/bin --no-check-certificate https://qtp.qmailtoaster.org/bin/spamdyke-stats&lt;br /&gt;
  # chmod +x /usr/local/bin/spamdyke-stats&lt;br /&gt;
* Test the script by running as root:&lt;br /&gt;
  # cat /var/log/maillog | spamdyke-stats&lt;br /&gt;
* If running correctly, will generate below output:&lt;br /&gt;
       747   89.14%  ALLOWED&lt;br /&gt;
       46    5.48%  DENIED_OTHER&lt;br /&gt;
       40    4.77%  DENIED_RBL_MATCH&lt;br /&gt;
 --------------- Breakdown ---------------&lt;br /&gt;
 -----------------------------------------&lt;br /&gt;
        4    0.47%  DENIED_SENDER_NO_MX&lt;br /&gt;
        1    0.11%  TIMEOUT&lt;br /&gt;
 &lt;br /&gt;
 ---------------- Summary ----------------&lt;br /&gt;
 Allowed:      747   89.14%&lt;br /&gt;
 Timeout:        1    0.11%&lt;br /&gt;
 Errors :        0    0.00%&lt;br /&gt;
 Denied :       90   10.73%&lt;br /&gt;
 Total  :      838  100.00%&lt;br /&gt;
* Save this [http://pastebin.com/aaPTcR8x Spamdyke-Stats-Report.pl] script in the same folder and chmod +x the filename&lt;br /&gt;
* Install some Perl libraries:&lt;br /&gt;
  yum install perl-Time-TAI64 perl-Date-Calc&lt;br /&gt;
* Edit the Spamdyke-Stats-Report.pl script and set $MachineName with your servername and $MailTo with your email address&lt;br /&gt;
* Test the script by running as root and check your mailbox:&lt;br /&gt;
  # /usr/share/qmt/scripts/Spamdyke-Stats-Report.pl&lt;br /&gt;
* Add it to crontab:&lt;br /&gt;
  05 00 * * * root /usr/share/qmt/scripts/Spamdyke-Stats-Report.pl 2&amp;gt;&amp;amp;1 &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
== Spamdyke QRV ==&lt;br /&gt;
&lt;br /&gt;
 Spamdyke&#039;s chkuser replacement&lt;br /&gt;
 # wget https://www.spamdyke.org/releases/spamdyke-5.0.1.tgz&lt;br /&gt;
 # tar zxvf spamdyke-5.0.1.tgz&lt;br /&gt;
 # cd spamdyke-5.0.1/spamdyke-qrv&lt;br /&gt;
 # VALIAS_PATH=/home/vpopmail/bin/valias VUSERINFO_PATH=/home/vpopmail/bin/vuserinfo ./configure --with-vpopmail-support --with-excessive-output&lt;br /&gt;
 # make install&lt;br /&gt;
 # mv /usr/local/bin/spamdyke-qrv /opt/spamdyke/bin&lt;br /&gt;
 # chmod u+s /opt/spamdyke/bin/spamdyke-qrv&lt;br /&gt;
 # ln -s /opt/spamdyke/bin/spamdyke-qrv /usr/bin/spamdyke-qrv&lt;br /&gt;
 # vi /etc/spamdyke/spamdyke.conf (Add settings)&lt;br /&gt;
   reject-recipient=unavailable&lt;br /&gt;
   recipient-validation-command=/usr/bin/spamdyke-qrv -v -d&lt;br /&gt;
 # vi /home/vpopmail/domains/mydomain.com/.qmail-default (Edit)&lt;br /&gt;
   |/home/vpopmail/bin/vdelivermail &#039;&#039; bounce-no-mailbox&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Control_Files_by_Name&amp;diff=1654</id>
		<title>Control Files by Name</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Control_Files_by_Name&amp;diff=1654"/>
		<updated>2026-04-30T14:20:37Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Control Files|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
Here is a table of control files in the &#039;&#039;&#039;/var/qmail/control&#039;&#039;&#039; directory listed alphabetically, with their defaults (&#039;-&#039; = none), whether or not they&#039;re included in the basic Qmail-Toaster, and the modules they are used by.&lt;br /&gt;
&lt;br /&gt;
Note, default values are Qmail-Toaster defaults, not necessarily qmail defaults.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! control file name !! default !! included !! used by&lt;br /&gt;
|-&lt;br /&gt;
| [[authsenders]] || - || No || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[badhelo]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[badloadertypes.cdb]] || Mi5kb&lt;br /&gt;
MzIuZ&lt;br /&gt;
&lt;br /&gt;
MyLmR&lt;br /&gt;
&lt;br /&gt;
MyLkR&lt;br /&gt;
|| Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[badmailfrom]] || &amp;quot;*\ @*&amp;quot;&lt;br /&gt;
&amp;quot;!*@*.*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;*%*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(without quotes)&lt;br /&gt;
|| Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[badmailfromnorelay]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[badmailto]] || [\(\)]&lt;br /&gt;
[\{\}]&lt;br /&gt;
&lt;br /&gt;
@.*@&lt;br /&gt;
&lt;br /&gt;
[\%]&lt;br /&gt;
&lt;br /&gt;
[\!]&lt;br /&gt;
|| Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[badmailtonorelay]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[badmimetypes.cdb]] || TVoAAAEAA TVrhARwAK&lt;br /&gt;
TVoAAAQAA TVrmAU4AA&lt;br /&gt;
&lt;br /&gt;
TVoFAQUAA TVrQAT8AA&lt;br /&gt;
&lt;br /&gt;
TVoIARMAA TVrvAEQAe&lt;br /&gt;
&lt;br /&gt;
TVouARsAA UEsDBAkAA&lt;br /&gt;
&lt;br /&gt;
TVpAALQAc VFZxUUFBT&lt;br /&gt;
&lt;br /&gt;
TVpQAAIAA VkZaeFVVR&lt;br /&gt;
&lt;br /&gt;
TVpQAAMAA ZGltIGZpb&lt;br /&gt;
&lt;br /&gt;
TVpyAXkAX&lt;br /&gt;
|| Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[blacklists]] || sbl.spamhaus.org || Yes || rblsmtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[bouncefrom]] || MAILER-DAEMON || No || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[bouncehost]] || [[me]] || No || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[clientca.pem]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[clientcert.pem]] || (generated) || Yes || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[clientcrl.pem]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[concurrencyincoming]] || 100 || Yes || tcpserver for&lt;br /&gt;
qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[concurrencylocal]] || 10 || No || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[concurrencyremote]] || 60 || Yes || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[databytes]] || 20971520 || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[defaultdelivery]] || ./Maildir/ || Yes || qmail-local via&lt;br /&gt;
qmail-send and qmail-start&lt;br /&gt;
|-&lt;br /&gt;
| [[defaultdomain]] || &amp;lt;hostname --domain&amp;gt; || Yes || qmail-inject&lt;br /&gt;
|-&lt;br /&gt;
| [[defaulthost]] || &amp;lt;hostname --domain&amp;gt; || Yes || qmail-inject&lt;br /&gt;
|-&lt;br /&gt;
| [[dh1024.pem]] || (generated key) || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[dh512.pem]] || (generated key) || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[doublebouncehost]] || [[me]] || No || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[doublebounceto]] || postmaster || No || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[envnoathost]] || [[me]] || No || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[helohost]] || [[me]] || No || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[idhost]] || [[me]] || No || qmail-inject&lt;br /&gt;
|-&lt;br /&gt;
| [[localiphost]] || [[me]] || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[locals]] || localhost&lt;br /&gt;
&amp;lt;hostname --fqdn&amp;gt;&lt;br /&gt;
|| Yes || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[logcount]] || 100 || Yes || multilog&lt;br /&gt;
|-&lt;br /&gt;
| [[logsize]] || 1000000 (~1M) || Yes || multilog&lt;br /&gt;
|-&lt;br /&gt;
| [[me]] || &amp;lt;hostname --fqdn&amp;gt; || Yes || various defaults&lt;br /&gt;
|-&lt;br /&gt;
| [[morercpthosts]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[percenthack]] || - || No || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[plusdomain]] || &amp;lt;hostname --domain&amp;gt; || Yes || qmail-inject&lt;br /&gt;
|-&lt;br /&gt;
| [[qmqpservers]] || - || No || qmail-qmqpc&lt;br /&gt;
|-&lt;br /&gt;
| [[queuelifetime]] || 86400 || Yes || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
| [[rcpthosts]] || &amp;lt;hostname --fqdn&amp;gt; || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[rsa512.pem]] || (generated key) || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[servercert.pem]] || (generated key) || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[smtpgreeting]] || (generated message) || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[smtproutes]] || - || Yes || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[spfbehavior]] || 3 || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[spfexp]] || (default) || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[spfguess]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[spfrules]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[taps]] || - || No || qmail-queue&lt;br /&gt;
|-&lt;br /&gt;
| [[timeoutconnect]] || 60 || No || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[timeoutremote]] || 1200 || No || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[timeoutsmtpd]] || 1200 || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[tlsclientciphers]] || (generated) || Yes || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[tlsclients]] || - || No || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[tlshosts/exhaustivelist]] || - || No || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[tlshosts/FQDN.pem]] || - || No || qmail-remote&lt;br /&gt;
|-&lt;br /&gt;
| [[tlsserverciphers]] || (generated) || Yes || qmail-smtpd&lt;br /&gt;
|-&lt;br /&gt;
| [[virtualdomains]] || (added by vpopmail) || No || qmail-send&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1653</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1653"/>
		<updated>2026-04-30T14:16:53Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;authsenders&lt;br /&gt;
 Authenticated sender. For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
   @example.com|generic|passwd&lt;br /&gt;
   .subdomain.example.com|other|otherpw&lt;br /&gt;
   mail@example.com|test|testpass&lt;br /&gt;
   info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
   :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1652</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1652"/>
		<updated>2026-04-30T14:16:35Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;authsenders&lt;br /&gt;
 Authenticated sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
   @example.com|generic|passwd&lt;br /&gt;
   .subdomain.example.com|other|otherpw&lt;br /&gt;
   mail@example.com|test|testpass&lt;br /&gt;
   info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
   :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1651</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1651"/>
		<updated>2026-04-30T14:16:14Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;authsenders&lt;br /&gt;
 Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
   @example.com|generic|passwd&lt;br /&gt;
   .subdomain.example.com|other|otherpw&lt;br /&gt;
   mail@example.com|test|testpass&lt;br /&gt;
   info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
   :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1650</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1650"/>
		<updated>2026-04-30T14:15:26Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;authsenders&lt;br /&gt;
 Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
               @example.com|generic|passwd&lt;br /&gt;
               .subdomain.example.com|other|otherpw&lt;br /&gt;
               mail@example.com|test|testpass&lt;br /&gt;
               info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
               :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1649</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1649"/>
		<updated>2026-04-30T14:15:05Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;authsenders&lt;br /&gt;
Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
               @example.com|generic|passwd&lt;br /&gt;
               .subdomain.example.com|other|otherpw&lt;br /&gt;
               mail@example.com|test|testpass&lt;br /&gt;
               info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
               :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1648</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1648"/>
		<updated>2026-04-30T14:14:48Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;authsenders&lt;br /&gt;
 Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
               @example.com|generic|passwd&lt;br /&gt;
               .subdomain.example.com|other|otherpw&lt;br /&gt;
               mail@example.com|test|testpass&lt;br /&gt;
               info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
               :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1647</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1647"/>
		<updated>2026-04-30T14:14:37Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; authsenders&lt;br /&gt;
 Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
               @example.com|generic|passwd&lt;br /&gt;
               .subdomain.example.com|other|otherpw&lt;br /&gt;
               mail@example.com|test|testpass&lt;br /&gt;
               info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
               :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1646</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1646"/>
		<updated>2026-04-30T14:13:44Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; authsenders&lt;br /&gt;
 Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with&lt;br /&gt;
 the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows&lt;br /&gt;
 the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is&lt;br /&gt;
 missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
               @example.com|generic|passwd&lt;br /&gt;
               .subdomain.example.com|other|otherpw&lt;br /&gt;
               mail@example.com|test|testpass&lt;br /&gt;
               info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
               :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1645</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1645"/>
		<updated>2026-04-30T14:12:52Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; authsenders&lt;br /&gt;
  Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN with   the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication information is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
               @example.com|generic|passwd&lt;br /&gt;
               .subdomain.example.com|other|otherpw&lt;br /&gt;
               mail@example.com|test|testpass&lt;br /&gt;
               info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
               :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1644</id>
		<title>Authsenders</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Authsenders&amp;diff=1644"/>
		<updated>2026-04-30T14:05:56Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: Created page with &amp;quot; authsenders   Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN   with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port   follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; authsenders&lt;br /&gt;
  Authenticated  sender.  For each sender included in authsenders: sender:relay:port|user|password qmail-remote will try SMTP Authentication of type CRAM-MD5, LOGIN, or PLAIN&lt;br /&gt;
  with the provided user name user and password password (the authentication information) and eventually relay the mail through relay on port port.  The use of relay and port&lt;br /&gt;
  follows the same rules as for smtproutes Note: In case sender is empty, qmail-remote will try to deliver each outgoing mail SMTP authenticated. If the authentication infor‐&lt;br /&gt;
  mation is missing, the mail is delivered none-authenticated.  authsenders can be constructed as follows:&lt;br /&gt;
&lt;br /&gt;
               @example.com|generic|passwd&lt;br /&gt;
               .subdomain.example.com|other|otherpw&lt;br /&gt;
               mail@example.com|test|testpass&lt;br /&gt;
               info@example.com:smtp.example.com:26|other|otherpw&lt;br /&gt;
               :mailrelay.example.com:587|e=mc2|testpass&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=Control_Files_by_Function&amp;diff=1643</id>
		<title>Control Files by Function</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=Control_Files_by_Function&amp;diff=1643"/>
		<updated>2026-04-30T14:04:26Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#Control Files|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
Here are the files in /var/qmail/control, listed by function.&lt;br /&gt;
==multilog==&lt;br /&gt;
[[logcount]]&lt;br /&gt;
&lt;br /&gt;
[[logsize]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==qmail-inject==&lt;br /&gt;
[[defaultdomain]]&lt;br /&gt;
&lt;br /&gt;
[[defaulthost]]&lt;br /&gt;
&lt;br /&gt;
[[idhost]]&lt;br /&gt;
&lt;br /&gt;
[[plusdomain]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==qmail-local==&lt;br /&gt;
[[defaultdelivery]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==qmail-qmqpc==&lt;br /&gt;
[[qmqpservers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==qmail-queue==&lt;br /&gt;
[[taps]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==qmail-remote==&lt;br /&gt;
===Constraints===&lt;br /&gt;
[[timeoutconnect]]&lt;br /&gt;
&lt;br /&gt;
[[timeoutremote]]&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
[[helohost]]&lt;br /&gt;
&lt;br /&gt;
[[smtproutes]]&lt;br /&gt;
&lt;br /&gt;
[[authsenders]]&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
[[clientcert.pem]]&lt;br /&gt;
&lt;br /&gt;
[[notlshosts/FQDN]]&lt;br /&gt;
&lt;br /&gt;
[[tlsclientciphers]]&lt;br /&gt;
&lt;br /&gt;
[[tlshosts/exhaustivelist]]&lt;br /&gt;
&lt;br /&gt;
[[tlshosts/FQDN.pem]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==qmail-send==&lt;br /&gt;
&#039;&#039;&#039;WARNING: qmail-send&#039;&#039;&#039; reads its control files only when it starts. If you change the control files, you must stop and restart &#039;&#039;&#039;qmail-send&#039;&#039;&#039;. Exception: If &#039;&#039;&#039;qmail-send&#039;&#039;&#039; receives a HUP signal, it will reload [[locals]] and [[virtualdomains]].&lt;br /&gt;
===Constraints===&lt;br /&gt;
[[concurrencylocal]]&lt;br /&gt;
&lt;br /&gt;
[[concurrencyremote]]&lt;br /&gt;
&lt;br /&gt;
[[queuelifetime]]&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
[[bouncefrom]]&lt;br /&gt;
&lt;br /&gt;
[[bouncehost]]&lt;br /&gt;
&lt;br /&gt;
[[doublebouncehost]]&lt;br /&gt;
&lt;br /&gt;
[[doublebounceto]]&lt;br /&gt;
&lt;br /&gt;
[[envnoathost]]&lt;br /&gt;
&lt;br /&gt;
[[locals]]&lt;br /&gt;
&lt;br /&gt;
[[percenthack]]&lt;br /&gt;
&lt;br /&gt;
[[virtualdomains]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==qmail-smtpd==&lt;br /&gt;
===Constraints===&lt;br /&gt;
&lt;br /&gt;
[[concurrencyincoming]]&lt;br /&gt;
&lt;br /&gt;
[[databytes]]&lt;br /&gt;
&lt;br /&gt;
[[timeoutsmtpd]]&lt;br /&gt;
&lt;br /&gt;
===Filtering===&lt;br /&gt;
[[badhelo]]&lt;br /&gt;
&lt;br /&gt;
[[badloadertypes.cdb]]&lt;br /&gt;
&lt;br /&gt;
[[badmailfrom]]&lt;br /&gt;
&lt;br /&gt;
[[badmailfromnorelay]]&lt;br /&gt;
&lt;br /&gt;
[[badmailto]]&lt;br /&gt;
&lt;br /&gt;
[[badmailtonorelay]]&lt;br /&gt;
&lt;br /&gt;
[[badmimetypes.cdb]]&lt;br /&gt;
&lt;br /&gt;
[[blacklists]]&lt;br /&gt;
&lt;br /&gt;
====Sender Policy Framework (SPF)====&lt;br /&gt;
[[spfbehavior]]&lt;br /&gt;
&lt;br /&gt;
[[spfexp]]&lt;br /&gt;
&lt;br /&gt;
[[spfguess]]&lt;br /&gt;
&lt;br /&gt;
[[spfrules]]&lt;br /&gt;
&lt;br /&gt;
===Network===&lt;br /&gt;
[[localiphost]]&lt;br /&gt;
&lt;br /&gt;
[[morercpthosts]]&lt;br /&gt;
&lt;br /&gt;
[[rcpthosts]]&lt;br /&gt;
&lt;br /&gt;
[[smtpgreeting]]&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
[[clientca.pem]]&lt;br /&gt;
&lt;br /&gt;
[[clientcrl.pem]]&lt;br /&gt;
&lt;br /&gt;
[[dh1024.pem]]&lt;br /&gt;
&lt;br /&gt;
[[dh512.pem]]&lt;br /&gt;
&lt;br /&gt;
[[rsa512.pem]]&lt;br /&gt;
&lt;br /&gt;
[[servercert.pem]]&lt;br /&gt;
&lt;br /&gt;
[[tlsclients]]&lt;br /&gt;
&lt;br /&gt;
[[tlsserverciphers]]&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<entry>
		<id>http://wiki.qmailtoaster.org:80/index.php?title=DKIM&amp;diff=1642</id>
		<title>DKIM</title>
		<link rel="alternate" type="text/html" href="http://wiki.qmailtoaster.org:80/index.php?title=DKIM&amp;diff=1642"/>
		<updated>2026-04-21T22:21:34Z</updated>

		<summary type="html">&lt;p&gt;Ebroch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Configuration#How_to_Setup_DKIM_with_Qmail_Toaster|Back]]&amp;lt;br&amp;gt;&lt;br /&gt;
Source: [https://manuel.mausz.at/coding/qmail-dkim/ Manuel Mausz&#039;] Perl script&lt;br /&gt;
&lt;br /&gt;
1. DKIM sign all email with global key&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Set up signing framework&#039;&#039;&#039;&lt;br /&gt;
 # yum -y install perl-XML-Simple perl-Mail-DKIM perl-XML-Parser&lt;br /&gt;
 # qmailctl stop&lt;br /&gt;
 # cd /var/qmail/bin&lt;br /&gt;
 # mv qmail-remote qmail-remote.orig&lt;br /&gt;
 &amp;lt;!--# wget -P /var/qmail/bin  https://raw.githubusercontent.com/qmtoaster/dkim/master/qmail-remote--&amp;gt;&lt;br /&gt;
 &amp;lt;!--# wget https://manuel.mausz.at/coding/qmail-dkim/qmail-dkim-0.3.pl--&amp;gt;&lt;br /&gt;
 # wget https://raw.githubusercontent.com/qmtoaster/dkim/master/mail-dkim-0.3.pl&lt;br /&gt;
 # chmod 755 mail-dkim-0.3.pl &amp;amp;&amp;amp; chown root:qmail mail-dkim-0.3.pl&lt;br /&gt;
 # ln -s mail-dkim-0.3.pl qmail-remote&lt;br /&gt;
 # mkdir /var/qmail/control/dkim&lt;br /&gt;
 # chown -R qmailr:qmail /var/qmail/control/dkim&lt;br /&gt;
 # cd /var/qmail/control/dkim&lt;br /&gt;
 # wget https://raw.githubusercontent.com/qmtoaster/dkim/master/signconf.xml&lt;br /&gt;
 # openssl genrsa -out global.key 2048 &amp;amp;&amp;amp; chmod 644 global.key&lt;br /&gt;
 # openssl rsa -in global.key -pubout -out global.txt&lt;br /&gt;
 # perl -pi -e &#039;s/-----BEGIN PUBLIC KEY-----/dkim1._domainkey IN TXT &amp;quot;k=rsa; p=/g; s/-----END PUBLIC KEY-----/&amp;quot;/g; s/\n//g&#039; global.txt&lt;br /&gt;
 # qmailctl start&lt;br /&gt;
 # cat signconf.xml&amp;lt;span style=&amp;quot;color:tomato&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;dkimsign&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- per default sign all mails using dkim --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;global algorithm=&amp;quot;rsa-sha256&amp;quot; domain=&amp;quot;/var/qmail/control/me&amp;quot; keyfile=&amp;quot;/var/qmail/control/dkim/global.key&amp;quot; method=&amp;quot;simple&amp;quot; selector=&amp;quot;dkim1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;types id=&amp;quot;dkim&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;types id=&amp;quot;domainkey&amp;quot; method=&amp;quot;nofws&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/global&amp;gt;&lt;br /&gt;
 &amp;lt;/dkimsign&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 # cat global.txt&amp;lt;span style=&amp;quot;color:tomato&amp;quot;&amp;gt;&lt;br /&gt;
  dkim1._domainkey      IN      TXT     &amp;quot;k=rsa; p=******************************&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Create DNS TXT record from the above file &#039;public.txt&#039;&#039;&#039;&#039;&lt;br /&gt;
  Host                                Text&lt;br /&gt;
  dkim1._domainkey       	v=DKIM1; k=rsa; p=*************************&amp;lt;br&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Your DKIM global key setup is done. Send email to Yahoo or GMail, inspect header.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
2. DKIM sign domain with specific key&lt;br /&gt;
 # cd /var/qmail/control/dkim&lt;br /&gt;
 # openssl genrsa -out dom.com.key 2048 &amp;amp;&amp;amp; chmod 644 dom.com.key&lt;br /&gt;
 # openssl rsa -in dom.com.key -pubout -out dom.com.txt&lt;br /&gt;
 # perl -pi -e &#039;s/-----BEGIN PUBLIC KEY-----/dkim1._domainkey IN TXT &amp;quot;k=rsa; p=/g; s/-----END PUBLIC KEY-----/&amp;quot;/g; s/\n//g&#039; dom.com.txt&lt;br /&gt;
 # cat dom.com.txt&amp;lt;span style=&amp;quot;color:tomato&amp;quot;&amp;gt;&lt;br /&gt;
  dkim1._domainkey       IN      TXT     &amp;quot;k=rsa; p=******************************&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Create DNS TXT record from the above file &#039;dom.com.txt&#039;&#039;&#039;&#039;&lt;br /&gt;
 Host                                Text&lt;br /&gt;
  dkim1._domainkey       	v=DKIM1; k=rsa; p=*************************&amp;lt;br&amp;gt;&lt;br /&gt;
 # cat signconf.xml&amp;lt;span style=&amp;quot;color:tomato&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;dkimsign&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- per default sign all mails using dkim --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;global algorithm=&amp;quot;rsa-sha256&amp;quot; domain=&amp;quot;/var/qmail/control/me&amp;quot; keyfile=&amp;quot;/var/qmail/control/dkim/global.key&amp;quot; method=&amp;quot;simple&amp;quot; selector=&amp;quot;dkim1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;types id=&amp;quot;dkim&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;types id=&amp;quot;domainkey&amp;quot; method=&amp;quot;nofws&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/global&amp;gt;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- dkim sign dom.com --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;dom.com domain=&amp;quot;dom.com&amp;quot; keyfile=&amp;quot;/var/qmail/control/dkim/dom.com.key&amp;quot; selector=&amp;quot;dkim1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;types id=&amp;quot;dkim&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;types id=&amp;quot;domainkey&amp;quot; method=&amp;quot;nofws&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/dom.com&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/dkimsign&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
3. DKIM no signing for domain&lt;br /&gt;
&lt;br /&gt;
 # cd /var/qmail/control/dkim&lt;br /&gt;
 # cat signconf.xml&amp;lt;span style=&amp;quot;color:tomato&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;dkimsign&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- per default sign all mails using dkim --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;global algorithm=&amp;quot;rsa-sha256&amp;quot; domain=&amp;quot;/var/qmail/control/me&amp;quot; keyfile=&amp;quot;/var/qmail/control/dkim/global.key&amp;quot; method=&amp;quot;simple&amp;quot; selector=&amp;quot;dkim1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;types id=&amp;quot;dkim&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;types id=&amp;quot;domainkey&amp;quot; method=&amp;quot;nofws&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/global&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- dkim sign dom.com --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;dom.com domain=&amp;quot;dom.com&amp;quot; keyfile=&amp;quot;/var/qmail/control/dkim/dom.com.key&amp;quot; selector=&amp;quot;dkim1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;types id=&amp;quot;dkim&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;types id=&amp;quot;domainkey&amp;quot; method=&amp;quot;nofws&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/dom.com&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;strong&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- no dkim signing nosigndom.com --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;nosigndom.com /&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/dkimsign&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. DKIM verification (Spamassassin preferred):&lt;br /&gt;
&lt;br /&gt;
 Assumes:  &lt;br /&gt;
   a. &#039;QMAILQUEUE=&amp;quot;/var/qmail/bin/simscan&amp;quot;&#039; defined in /etc/tcprules.d/tcp.smtp &lt;br /&gt;
   b. /var/qmail/bin/qmail-queue is a link.&lt;br /&gt;
   c. &#039;export DKVERIFY=1&#039; and &#039;/usr/bin/softlimit -m 128000000&#039; in /var/qmail/supervise/smtp/run&lt;br /&gt;
 # qmailctl stop&lt;br /&gt;
 # cd /var/qmail/bin&lt;br /&gt;
 # wget http://www.qmailtoaster.org/dkimverify.pl&lt;br /&gt;
 # wget http://www.qmailtoaster.org/qmail-queue.pl.sh&lt;br /&gt;
 # chown root:root dkimverify.pl&lt;br /&gt;
 # chown qmailq:qmail qmail-queue.pl.sh&lt;br /&gt;
 # chmod 755 dkimverify.pl&lt;br /&gt;
 # chmod 4777 qmail-queue.pl.sh&lt;br /&gt;
 # unlink qmail-queue&lt;br /&gt;
 # ln -s qmail-queue.pl.sh qmail-queue&lt;br /&gt;
 # qmailctl start&lt;br /&gt;
 Send email to user on the host&lt;br /&gt;
 Check email header dkim verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Notes: &lt;br /&gt;
 1) In order to test your settings, simply send an email to: check-auth@verifier.port25.com and/or check-auth2@verifier.port25.com&lt;br /&gt;
    with the suject of &amp;quot;test&amp;quot; (without the quotes) and &amp;quot;Just testing&amp;quot; in the body (also without quotes). It is best but not required&lt;br /&gt;
    to have a subject and body because this service will also show you how spamassassin rated your email. If you have a GMAIL/Yahoo&lt;br /&gt;
    email account sending to either or both accounts DKIM signatures could be verified.&lt;br /&gt;
    Click to test&lt;br /&gt;
 2) To test your DKIM signature wiith OpenDKIM&#039;s &#039;opendkim-testkey&#039; utility install opendkim and run the utility:&lt;br /&gt;
    a) # yum install epel-release opendkim*&lt;br /&gt;
    b) # opendkim-testkey -vvvv -d otherdomain.com  -k /var/qmail/control/dkim/otherdomain.com.key -s dkim1&amp;lt;br&amp;gt;&lt;br /&gt;
         opendkim-testkey: using default configfile /etc/opendkim.conf&lt;br /&gt;
         opendkim-testkey: /var/qmail/control/dkim/otherdomain.com.key: WARNING: unsafe permissions&lt;br /&gt;
         opendkim-testkey: key loaded from /var/qmail/control/dkim/otherdomain.com.key&lt;br /&gt;
         opendkim-testkey: checking key &#039;dkim1._domainkey.otherdomain.com&#039;&lt;br /&gt;
         opendkim-testkey: key OK&amp;lt;br&amp;gt;&lt;br /&gt;
 3) Testing DKIM signatures sending from Roundcube webmail I found that plain text formatted email caused DKIM failure sending&lt;br /&gt;
    to port25.com and GMAIL recipients, but when sending the same email in Roundcube&#039;s html format the DKIM signature was verified&lt;br /&gt;
    and passed. The same email DKIM signature passed with Squirrelmail, Thunderbird, and OpenDKIM&#039;s &#039;opendkim-testkey&#039; program. It &lt;br /&gt;
    seems that certain email clients will add or subtract characters in the email header causing DKIM to fail. This may be happening &lt;br /&gt;
    in Roundcube while other clients do not affect the email header adversely. I have a help request in the Roundcube user&#039;s list&lt;br /&gt;
    for this issue. Hopefully, this issue is  merely a configuration setting, if not, that it is resolved soon.&lt;/div&gt;</summary>
		<author><name>Ebroch</name></author>
	</entry>
	<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>
</feed>