Difference between revisions of "Qpsmtpd/sme11"

From SME Server
Jump to navigationJump to search
(Created page with "=qpsmtpd= qpsmtpd has been a core component of SME Server since SME 7, providing advanced spam fighting capabilities. SME Server 9.2 introduced qpsmtpd...")
 
Line 1: Line 1:
 +
{{WIP box|this is a work in progress for the new SME 11 qpsmtpd configuration}}
 +
 
=qpsmtpd=
 
=qpsmtpd=
 
[[Wikipedia:Qpsmtpd|qpsmtpd]] has been a core component of SME Server since SME 7, providing advanced spam fighting capabilities.
 
[[Wikipedia:Qpsmtpd|qpsmtpd]] has been a core component of SME Server since SME 7, providing advanced spam fighting capabilities.
  
 
SME Server 9.2 introduced qpsmtpd 0.96 with several new capabilities.  At the same time, smeserver-qpsmtpd has been updated to provide additional SME Server configuration options.
 
SME Server 9.2 introduced qpsmtpd 0.96 with several new capabilities.  At the same time, smeserver-qpsmtpd has been updated to provide additional SME Server configuration options.
SME Server 11 will upgrade to qpsmtpd 1.0. At the same time, smeserver-qpsmtpd has been updated providing separate configuration for each running deamons and introducing a third running deamon now covering all usual SMTP ports 25 (qpsmtpd), 587 (new uqpsmtpd) and 465 (sqpsmtpd).
 
  
==Upgrade Considerations==
+
SME Server 10 start moving the services to systemd.
 +
 
 +
SME Server 11 will upgrade to qpsmtpd 1.0. At the same time, smeserver-qpsmtpd has been updated providing separate configuration for each running deamons and introducing a third running deamon now covering all usual SMTP ports 25 (qpsmtpd), 587 (new uqpsmtpd) and 465 (sqpsmtpd). Also SME11 provides a full systemd implementaiton of the services without runit. Softlimit has been increased from 50MB to 150MB.
 +
 
 +
==Systemd Configuration ==
 +
Some of the setting that were previously arranged using runit run script and multiple called script are all now present in systemd unit, with a dropin file to override default. The dropin file is templated<syntaxhighlight lang="ini">
 +
# /usr/lib/systemd/system/uqpsmtpd.service
 +
[Unit]
 +
Description=qpsmtpd on submission port
 +
After=network.target network-online.target qpsmtpd.service
 +
 
 +
[Service]
 +
Type=simple
 +
LimitDATA=150000000
 +
LimitSTACK=150000000
 +
LimitMEMLOCK=150000000
 +
Environment=PORT=587 INSTANCES=40 INSTANCES_PER_IP=5 QPSMTPD_CONFIG=/var/service/uqpsmtpd/config PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin TCPLOCALHOST=me
 +
WorkingDirectory=/var/service/qpsmtpd/
 +
 
 +
ExecStartPre=/sbin/e-smith/service-status uqpsmtpd
 +
ExecStartPre=/sbin/e-smith/systemd/qpsmtpd-init %N
 +
ExecStart=/usr/bin/qpsmtpd-forkserver \
 +
        -u qpsmtpd \
 +
        -l 0.0.0.0 \
 +
        -p $PORT \
 +
        -c $INSTANCES \
 +
        -m $INSTANCES_PER_IP
 +
ExecReload=/bin/kill -HUP $MAINPID
 +
Restart=always
 +
RestartSec=20s
 +
SyslogIdentifier=uqpsmtpd
 +
 
 +
[Install]
 +
WantedBy=sme-server.target
 +
 
 +
# /usr/lib/systemd/system/uqpsmtpd.service.d/50koozali.conf
 +
#------------------------------------------------------------
 +
#              !!DO NOT MODIFY THIS FILE!!
 +
#
 +
# Manual changes will be lost when this file is regenerated.
 +
#
 +
# Please read the developer's guide, which is available
 +
# at http://www.contribs.org/development/
 +
#
 +
# Copyright (C) 1999-2006 Mitel Networks Corporation
 +
#------------------------------------------------------------
 +
[Service]
 +
LimitDATA=150000000
 +
LimitSTACK=150000000
 +
LimitMEMLOCK=150000000
 +
Environment=
 +
Environment=QPSMTPD_CONFIG=/var/service/uqpsmtpd/config PORT=587 INSTANCES=10 INSTANCES_PER_IP=5 PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin TCPLOCALHOST=sme11.example.com
 +
</syntaxhighlight>
 +
 
 +
==Services folders==
 +
<syntaxhighlight lang="bash">
 +
/var/service/qpsmtpd
 +
/var/service/qpsmtpd/config
 +
/var/service/qpsmtpd/config/dkim
 +
/var/service/qpsmtpd/config/peers
 +
/var/service/qpsmtpd/peers
 +
/var/service/qpsmtpd/ssl
 +
/var/service/sqpsmtpd
 +
/var/service/sqpsmtpd/supervise
 +
/var/service/sqpsmtpd/config
 +
/var/service/sqpsmtpd/config/dkim -> ../../qpsmtpd/config/dkim
 +
/var/service/sqpsmtpd/config/peers
 +
/var/service/sqpsmtpd/peers
 +
/var/service/qpsmtpd/ssl -> ../qpsmtpd/ssl
 +
/var/service/uqpsmtpd
 +
/var/service/uqpsmtpd/config
 +
/var/service/uqpsmtpd/config/dkim -> ../../qpsmtpd/config/dkim
 +
/var/service/uqpsmtpd/config/peers
 +
/var/service/uqpsmtpd/peers
 +
/var/service/qpsmtpd/ssl -> ../qpsmtpd/ssl
 +
 
 +
</syntaxhighlight>
 +
 
 +
==Properties in configuration db==
 +
{| class="wikitable mw-collapsible"
 +
|+
 +
|property
 +
|qpsmtpd
 +
| sqpsmtpd
 +
|uqpsmtpd
 +
| information
 +
|-
 +
|Authentication
 +
|enabled
 +
|enabled
 +
|
 +
|
 +
|-
 +
| Bcc
 +
|disabled
 +
|
 +
|
 +
|
 +
|-
 +
|BccMode
 +
|cc
 +
|
 +
|
 +
|
 +
|-
 +
|BccUser
 +
|maillog
 +
|
 +
|
 +
|
 +
|-
 +
|DNSBL
 +
|disabled
 +
|
 +
|
 +
|
 +
|-
 +
|Instances
 +
|40
 +
|10
 +
|
 +
|
 +
|-
 +
|InstancesPerIP
 +
|5
 +
|5
 +
|
 +
|
 +
|-
 +
|LogLevel
 +
|6
 +
|
 +
|
 +
|
 +
|-
 +
|MaxScannerSize
 +
|25000000
 +
|
 +
|
 +
|
 +
|-
 +
|MaximumDateOffset
 +
|0
 +
|
 +
|
 +
|
 +
|-
 +
|PatternsScan
 +
|disabled
 +
|
 +
|
 +
|
 +
|-
 +
|Proxy
 +
|blocked
 +
|
 +
|
 +
|
 +
|-
 +
|RBLList
 +
|bl.spamcop.net,dnsbl-1.uceprotect.net,dnsbl-2.uceprotect.net,psbl.surriel.com,zen.spamhaus.org
 +
|
 +
|
 +
|
 +
|-
 +
|RHSBL
 +
|disabled
 +
|
 +
|
 +
|
 +
|-
 +
|RelayRequiresAuth
 +
|enabled
 +
|
 +
|
 +
|
 +
|-
 +
|SBLList
 +
|multi.surbl.org,black.uribl.com,rhsbl.sorbs.net
 +
|
 +
|
 +
|
 +
|-
 +
|TCPPort
 +
|25
 +
|465
 +
|587
 +
|
 +
|-
 +
|TCPProxyPort
 +
|25
 +
|
 +
|
 +
|
 +
|-
 +
|TlsBeforeAuth
 +
|1
 +
|
 +
|
 +
|
 +
|-
 +
|UBLList
 +
|multi.surbl.org:8-16-64-128,black.uribl.com,rhsbl.sorbs.net
 +
|
 +
|
 +
|
 +
|-
 +
|URIBL
 +
|disabled
 +
|
 +
|
 +
|
 +
|-
 +
|VirusScan
 +
|enabled
 +
|
 +
|
 +
|
 +
|-
 +
|access
 +
|public
 +
|public
 +
|public
 +
|
 +
|-
 +
|qplogsumm
 +
|disabled
 +
|
 +
|
 +
|
 +
|-
 +
|status
 +
|enabled
 +
|enabled
 +
|enabled
 +
|
 +
|-
 +
|tnef2mime
 +
|enabled
 +
|
 +
|
 +
|
 +
|}
 +
 
 +
==Templates==
 +
==Upgrade Considerations ==
 
===A-Record DNSBL Services===
 
===A-Record DNSBL Services===
: Some DNSBL services - notably b.barracudacentral.org - provide their results using a DNS "A" record instead of a DNS TXT record.  The dnsbl plugin requires these services to include a colon (":") in dnsbl_zones - however, SME used to use a colon the server separator in the configuration database.  In order to support these A-Record DNSBL services, the separator for RBLList, SBLList, and the new UBLList is now a comma.  
+
:Some DNSBL services - notably b.barracudacentral.org - provide their results using a DNS "A" record instead of a DNS TXT record.  The dnsbl plugin requires these services to include a colon (":") in dnsbl_zones - however, SME used to use a colon the server separator in the configuration database.  In order to support these A-Record DNSBL services, the separator for RBLList, SBLList, and the new UBLList is now a comma.
  
: You can now configure b.barracudacentral.org using (note the single quotes):
+
:You can now configure b.barracudacentral.org using (note the single quotes):
: <code><nowiki>config setprop qpsmtpd RBLList server1,server2,'b.barracudacentral.org:Blocked - see <http://bbl.barracudacentral.com/q.cgi?ip=%IP%>'</nowiki></code>
+
:<code><nowiki>config setprop qpsmtpd RBLList server1,server2,'b.barracudacentral.org:Blocked - see <http://bbl.barracudacentral.com/q.cgi?ip=%IP%>'</nowiki></code>
  
 
===DKIM & DMARC===
 
===DKIM & DMARC===
: DKIM & DMARC are now supported natively by SME Server.  To enable these you will need to configure appropriate DNS records in your public DNS server.
+
:DKIM & DMARC are now supported natively by SME Server.  To enable these you will need to configure appropriate DNS records in your public DNS server.
: There are forum reports of problems for users who had DKIM enabled using the DKIM contrib.
+
:There are forum reports of problems for users who had DKIM enabled using the DKIM contrib.
===URIBL===
+
===URIBL ===
: qpsmtpd now supports URIBL - the ability to block emails that contain known malicious URLs within the body of the email.  This service is disabled by default.
+
:qpsmtpd now supports URIBL - the ability to block emails that contain known malicious URLs within the body of the email.  This service is disabled by default.
  
: Enable URIBL with the default services using:
+
:Enable URIBL with the default services using:
 
  <nowiki>config setprop qpsmtpd URIBL enabled
 
  <nowiki>config setprop qpsmtpd URIBL enabled
signal-event email-update</nowiki>
+
signal-event email-update</nowiki>
  
: '''Note:''' If your SME server is using high traffic external DNS forwarders like [https://developers.google.com/speed/public-dns/ google] (8.8.8.8 / 8.8.4.4), [https://www.opendns.com/setupguide/ opendns] (208.67.222.222 / 208.67.220.220), or any large ISP's (Cox, Comcast, Verizon), enabling URIBL may block all incoming email.  This will only affect you if you have configured a DNS forwarder in server-manager -- a default SME server installation does its own direct DNS lookups and would not be affected unless you receive over 250,000 emails per day.
+
:'''Note:''' If your SME server is using high traffic external DNS forwarders like [https://developers.google.com/speed/public-dns/ google] (8.8.8.8 / 8.8.4.4), [https://www.opendns.com/setupguide/ opendns] (208.67.222.222 / 208.67.220.220), or any large ISP's (Cox, Comcast, Verizon), enabling URIBL may block all incoming email.  This will only affect you if you have configured a DNS forwarder in server-manager -- a default SME server installation does its own direct DNS lookups and would not be affected unless you receive over 250,000 emails per day.
  
: Read more at http://uribl.com/refused.shtml
+
:Read more at http://uribl.com/refused.shtml
  
 
==="Naughty" plugin===
 
==="Naughty" plugin===
: SME Server is now using the 'naughty' plugin which allows early plugins like dnsbl, earlytalker, etc to indicate that the email should be rejected at a later point in the interaction.  This allows the server to log extra information for denied emails.  Specifically, emails denied by dnsbl will now show the sender and recipient email addresses in the qpsmtpd log
+
:SME Server is now using the 'naughty' plugin which allows early plugins like dnsbl, earlytalker, etc to indicate that the email should be rejected at a later point in the interaction.  This allows the server to log extra information for denied emails.  Specifically, emails denied by dnsbl will now show the sender and recipient email addresses in the qpsmtpd log
  
 
==Plugins==
 
==Plugins==
Line 44: Line 290:
 
</div><br>
 
</div><br>
 
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4">
 
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4">
* [[Qpsmtpd:auth/auth_checkpassword|auth/auth_checkpassword]] (U)
+
*[[Qpsmtpd:auth/auth_checkpassword|auth/auth_checkpassword]] (U)
* [[Qpsmtpd:auth/auth_cvm_unix_local|auth/auth_cvm_unix_local]] (AC)
+
*[[Qpsmtpd:auth/auth_cvm_unix_local|auth/auth_cvm_unix_local]] (AC)
* [[Qpsmtpd:auth/authdeny|auth/authdeny]] (U)
+
*[[Qpsmtpd:auth/authdeny|auth/authdeny]] (U)
* [[Qpsmtpd:auth/auth_flat_file|auth/auth_flat_file]] (U)
+
*[[Qpsmtpd:auth/auth_flat_file|auth/auth_flat_file]] (U)
* [[Qpsmtpd:auth/auth_imap|auth/auth_imap]] (U)
+
*[[Qpsmtpd:auth/auth_imap|auth/auth_imap]] (U)
* [[Qpsmtpd:auth/auth_ldap_bind|auth/auth_ldap_bind]] (U)
+
*[[Qpsmtpd:auth/auth_ldap_bind|auth/auth_ldap_bind]] (U)
* [[Qpsmtpd:auth/auth_vpopmail|auth/auth_vpopmail]] (U)
+
*[[Qpsmtpd:auth/auth_vpopmail|auth/auth_vpopmail]] (U)
* [[Qpsmtpd:auth/auth_vpopmaild|auth/auth_vpopmaild]] (U)
+
*[[Qpsmtpd:auth/auth_vpopmaild|auth/auth_vpopmaild]] (U)
* [[Qpsmtpd:auth/auth_vpopmail_sql|auth/auth_vpopmail_sql]] (U)
+
*[[Qpsmtpd:auth/auth_vpopmail_sql|auth/auth_vpopmail_sql]] (U)
* [[Qpsmtpd:autowhitelist_relayrcpt|autowhitelist_relayrcpt]] (U)
+
*[[Qpsmtpd:autowhitelist_relayrcpt|autowhitelist_relayrcpt]] (U)
* [[Qpsmtpd:badmailfrom|badmailfrom]]
+
*[[Qpsmtpd:badmailfrom|badmailfrom]]
* [[Qpsmtpd:badmailfromto|badmailfromto]] (U)
+
*[[Qpsmtpd:badmailfromto|badmailfromto]] (U)
* [[Qpsmtpd:badrcptto|badrcptto]] (AC)
+
*[[Qpsmtpd:badrcptto|badrcptto]] (AC)
* [[Qpsmtpd:bcc|bcc]] (U DB)
+
*[[Qpsmtpd:bcc|bcc]] (U DB)
* [[Qpsmtpd:bogus_bounce|bogus_bounce]] (+ DB)
+
*[[Qpsmtpd:bogus_bounce|bogus_bounce]] (+ DB)
* [[Qpsmtpd:check_goodrcptto|check_goodrcptto]] (AC)
+
*[[Qpsmtpd:check_goodrcptto|check_goodrcptto]] (AC)
* [[Qpsmtpd:check_smtp_forward|check_smtp_forward]] (AC)
+
*[[Qpsmtpd:check_smtp_forward|check_smtp_forward]] (AC)
* [[Qpsmtpd_connection_time|connection_time]] (U CW)
+
*[[Qpsmtpd_connection_time|connection_time]] (U CW)
* [[Qpsmtpd:content_log|content_log]] (U)
+
*[[Qpsmtpd:content_log|content_log]] (U)
* [[Qpsmtpd:count_unrecognized_commands|count_unrecognized_commands]] (DB)
+
*[[Qpsmtpd:count_unrecognized_commands|count_unrecognized_commands]] (DB)
* [[Qpsmtpd:denysoft_multi_rcpt|denysoft_multi_rcpt]] (U)
+
*[[Qpsmtpd:denysoft_multi_rcpt|denysoft_multi_rcpt]] (U)
* [[Email#How_do_I_enable_and_configure_a_disclaimer_in_email_messages|disclaimer]] (U DB CW)
+
*[[Email#How_do_I_enable_and_configure_a_disclaimer_in_email_messages|disclaimer]] (U DB CW)
* [[Qpsmtpd:dkim|dkim]] (+ DB E)
+
*[[Qpsmtpd:dkim|dkim]] (+ DB E)
* [[Qpsmtpd:dkim_sign|dkim_sign]] (+ DB E)
+
*[[Qpsmtpd:dkim_sign|dkim_sign]] (+ DB E)
* [[Qpsmtpd:dmarc|dmarc]] (+ DB E)
+
*[[Qpsmtpd:dmarc|dmarc]] (+ DB E)
* [[Email#Real-time_Blackhole_List_.28RBL.29|dnsbl]] (* DB CW)
+
*[[Email#Real-time_Blackhole_List_.28RBL.29|dnsbl]] (* DB CW)
* [[Qpsmtpd:dns_whitelist_soft|dns_whitelist_soft]] (U)
+
*[[Qpsmtpd:dns_whitelist_soft|dns_whitelist_soft]] (U)
* [[Qpsmtpd:domainkeys|domainkeys]]
+
*[[Qpsmtpd:domainkeys|domainkeys]]
* [[Qpsmtpd:dont_require_anglebrackets|dont_require_anglebrackets]] (U)
+
*[[Qpsmtpd:dont_require_anglebrackets|dont_require_anglebrackets]] (U)
* [[Qpsmtpd:dspam|dspam]] (U)
+
*[[Qpsmtpd:dspam|dspam]] (U)
* [[Qpsmtpd_check_earlytalker|earlytalker]] (AC CW)
+
*[[Qpsmtpd_check_earlytalker|earlytalker]] (AC CW)
* [[Qpsmtpd:exe_filter|exe_filter]] (U AC)
+
*[[Qpsmtpd:exe_filter|exe_filter]] (U AC)
* [[Qpsmtpd:fcrdns|fcrdns]] (U)
+
*[[Qpsmtpd:fcrdns|fcrdns]] (U)
* [[Qpsmtpd:fix_headers_case|fix_headers_case]] (U CW)
+
*[[Qpsmtpd:fix_headers_case|fix_headers_case]] (U CW)
* [[Greylisting|greylisting]] (U CW)
+
*[[greylisting]] (U CW)
* [[Qpsmtpd:handler|handler]] (U)
+
*[[Qpsmtpd:handler|handler]] (U)
* [[Qpsmtpd:headers|headers]] (*)
+
*[[Qpsmtpd:headers|headers]] (*)
* [[Qpsmtpd:helo|helo]] (AC)
+
*[[Qpsmtpd:helo|helo]] (AC)
* [[Qpsmtpd:help|help]] (U)
+
*[[Qpsmtpd:help|help]] (U)
* [[Qpsmtpd:hosts_allow|hosts_allow]] (AC)
+
*[[Qpsmtpd:hosts_allow|hosts_allow]] (AC)
* [[Qpsmtpd:http_config|http_config]] (U)
+
*[[Qpsmtpd:http_config|http_config]] (U)
* [[Qpsmtpd:ident/geoip|ident/geoip]] (U)
+
*[[Qpsmtpd:ident/geoip|ident/geoip]] (U)
* [[Qpsmtpd:ident/p0f|ident/p0f]] (U)
+
*[[Qpsmtpd:ident/p0f|ident/p0f]] (U)
* [[Qpsmtpd:karma|karma]] (+ U DB)  
+
*[[Qpsmtpd:karma|karma]] (+ U DB)
* [[Qpsmtpd:karma_tool|karma_tool]]
+
*[[Qpsmtpd:karma_tool|karma_tool]]
* [[Qpsmtpd:loadcheck|loadcheck]] (+)
+
*[[Qpsmtpd:loadcheck|loadcheck]] (+)
* [[Qpsmtpd:logging|logging]] (AC)
+
*[[Qpsmtpd:logging|logging]] (AC)
* [[Qpsmtpd:loop|loop]] (U)
+
*[[Qpsmtpd:loop|loop]] (U)
* [[Qpsmtpd:milter|milter]] (U)
+
*[[Qpsmtpd:milter|milter]] (U)
* [[Qpsmtpd:naughty|naughty]] (+)
+
*[[Qpsmtpd:naughty|naughty]] (+)
* [[Qpsmtpd:noop_counter|noop_counter]] (U)
+
*[[Qpsmtpd:noop_counter|noop_counter]] (U)
* [[Qpsmtpd:parse_addr_withhelo|parse_addr_withhelo]] (U)
+
*[[Qpsmtpd:parse_addr_withhelo|parse_addr_withhelo]] (U)
* [[Qpsmtpd:peers|peers]] (AC)
+
*[[Qpsmtpd:peers|peers]] (AC)
* [[Qpsmtpd:per_user_config|per_user_config]] (U CW)
+
*[[Qpsmtpd:per_user_config|per_user_config]] (U CW)
* [[Qpsmtpd:qmail_deliverable|qmail_deliverable]] (U)
+
*[[Qpsmtpd:qmail_deliverable|qmail_deliverable]] (U)
* [[Qpsmtpd:queue|queue]] (AC)
+
*[[Qpsmtpd:queue|queue]] (AC)
* [[Qpsmtpd:quit_fortune|quit_fortune]] (U)
+
*[[Qpsmtpd:quit_fortune|quit_fortune]] (U)
* [[Qpsmtpd:random_error|random_error]] (U)
+
*[[Qpsmtpd:random_error|random_error]] (U)
* [[Qpsmtpd:rcpt_map|rcpt_map]] (U)
+
*[[Qpsmtpd:rcpt_map|rcpt_map]] (U)
* [[Qpsmtpd:rcpt_ok|rcpt_ok]] (AC)
+
*[[Qpsmtpd:rcpt_ok|rcpt_ok]] (AC)
* [[Qpsmtpd:rcpt_regexp|rcpt_regexp]] (U)
+
*[[Qpsmtpd:rcpt_regexp|rcpt_regexp]] (U)
* [[Qpsmtpd:registry.txt|registry.txt]] (U)
+
*[[Qpsmtpd:registry.txt|registry.txt]] (U)
* [[Qpsmtpd:relay|relay]] (AC)
+
*[[Qpsmtpd:relay|relay]] (AC)
* [[Qpsmtpd:resolvable_fromhost|resolvable_fromhost]] (AC)
+
*[[Qpsmtpd:resolvable_fromhost|resolvable_fromhost]] (AC)
* [[Email#Real-time_Blackhole_List_.28RBL.29|rhsbl]] (* DB CW)
+
*[[Email#Real-time_Blackhole_List_.28RBL.29|rhsbl]] (* DB CW)
* [[Qpsmtpd:sender_permitted_from|sender_permitted_from]] (+?)
+
*[[Qpsmtpd:sender_permitted_from|sender_permitted_from]] (+?)
* [[Email#Spamassassin|spamassassin]] (DB SM AC CW)
+
*[[Email#Spamassassin|spamassassin]] (DB SM AC CW)
* [[Qpsmtpd:stunnel|stunnel]] (U)
+
*[[Qpsmtpd:stunnel|stunnel]] (U)
* [[Qpsmtpd:tls|tls]] (AC)
+
*[[Qpsmtpd:tls|tls]] (AC)
* [[Qpsmtpd:tls_cert|tls_cert]]
+
*[[Qpsmtpd:tls_cert|tls_cert]]
* [[Qpsmtpd:tnef2mime|tnef2mime]] (AC)
+
*[[Qpsmtpd:tnef2mime|tnef2mime]] (AC)
* [[Qpsmtpd:uribl|uribl]] (+ DB)
+
*[[Qpsmtpd:uribl|uribl]] (+ DB)
* [[Qpsmtpd:user_config|user_config]] (U)
+
*[[Qpsmtpd:user_config|user_config]] (U)
* [[Virus:Email_Attachment_Blocking|virus]] (DB SM CW)
+
*[[Virus:Email_Attachment_Blocking|virus]] (DB SM CW)
* [[Qpsmtpd:whitelist|whitelist]] (U?)
+
*[[Qpsmtpd:whitelist|whitelist]] (U?)
 
</div>
 
</div>
  
 
----
 
----
[[Category:Mail]][[Category:Qpsmtpd]]
+
[[Category:Mail]]
 +
[[Category:Qpsmtpd]]
 +
[[Category:SME11-Development]]

Revision as of 16:01, 26 April 2024

Warning.png Work in Progress:
this is a work in progress for the new SME 11 qpsmtpd configuration has marked this page as a Work in Progress. The contents off this page may be in flux, please have a look at this page history the to see list of changes.


qpsmtpd

qpsmtpd has been a core component of SME Server since SME 7, providing advanced spam fighting capabilities.

SME Server 9.2 introduced qpsmtpd 0.96 with several new capabilities. At the same time, smeserver-qpsmtpd has been updated to provide additional SME Server configuration options.

SME Server 10 start moving the services to systemd.

SME Server 11 will upgrade to qpsmtpd 1.0. At the same time, smeserver-qpsmtpd has been updated providing separate configuration for each running deamons and introducing a third running deamon now covering all usual SMTP ports 25 (qpsmtpd), 587 (new uqpsmtpd) and 465 (sqpsmtpd). Also SME11 provides a full systemd implementaiton of the services without runit. Softlimit has been increased from 50MB to 150MB.

Systemd Configuration

Some of the setting that were previously arranged using runit run script and multiple called script are all now present in systemd unit, with a dropin file to override default. The dropin file is templated

# /usr/lib/systemd/system/uqpsmtpd.service
[Unit]
Description=qpsmtpd on submission port
After=network.target network-online.target qpsmtpd.service

[Service]
Type=simple
LimitDATA=150000000
LimitSTACK=150000000
LimitMEMLOCK=150000000
Environment=PORT=587 INSTANCES=40 INSTANCES_PER_IP=5 QPSMTPD_CONFIG=/var/service/uqpsmtpd/config PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin TCPLOCALHOST=me
WorkingDirectory=/var/service/qpsmtpd/

ExecStartPre=/sbin/e-smith/service-status uqpsmtpd
ExecStartPre=/sbin/e-smith/systemd/qpsmtpd-init %N
ExecStart=/usr/bin/qpsmtpd-forkserver \
        -u qpsmtpd \
        -l 0.0.0.0 \
        -p $PORT \
        -c $INSTANCES \
        -m $INSTANCES_PER_IP
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=20s
SyslogIdentifier=uqpsmtpd

[Install]
WantedBy=sme-server.target

# /usr/lib/systemd/system/uqpsmtpd.service.d/50koozali.conf
#------------------------------------------------------------
#              !!DO NOT MODIFY THIS FILE!!
# 
# Manual changes will be lost when this file is regenerated.
#
# Please read the developer's guide, which is available
# at http://www.contribs.org/development/
#
# Copyright (C) 1999-2006 Mitel Networks Corporation
#------------------------------------------------------------
[Service]
LimitDATA=150000000
LimitSTACK=150000000
LimitMEMLOCK=150000000
Environment=
Environment=QPSMTPD_CONFIG=/var/service/uqpsmtpd/config PORT=587 INSTANCES=10 INSTANCES_PER_IP=5 PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin TCPLOCALHOST=sme11.example.com

Services folders

/var/service/qpsmtpd
/var/service/qpsmtpd/config
/var/service/qpsmtpd/config/dkim
/var/service/qpsmtpd/config/peers
/var/service/qpsmtpd/peers
/var/service/qpsmtpd/ssl
/var/service/sqpsmtpd
/var/service/sqpsmtpd/supervise
/var/service/sqpsmtpd/config
/var/service/sqpsmtpd/config/dkim -> ../../qpsmtpd/config/dkim
/var/service/sqpsmtpd/config/peers
/var/service/sqpsmtpd/peers
/var/service/qpsmtpd/ssl -> ../qpsmtpd/ssl
/var/service/uqpsmtpd
/var/service/uqpsmtpd/config
/var/service/uqpsmtpd/config/dkim -> ../../qpsmtpd/config/dkim
/var/service/uqpsmtpd/config/peers
/var/service/uqpsmtpd/peers
/var/service/qpsmtpd/ssl -> ../qpsmtpd/ssl

Properties in configuration db

property qpsmtpd sqpsmtpd uqpsmtpd information
Authentication enabled enabled
Bcc disabled
BccMode cc
BccUser maillog
DNSBL disabled
Instances 40 10
InstancesPerIP 5 5
LogLevel 6
MaxScannerSize 25000000
MaximumDateOffset 0
PatternsScan disabled
Proxy blocked
RBLList bl.spamcop.net,dnsbl-1.uceprotect.net,dnsbl-2.uceprotect.net,psbl.surriel.com,zen.spamhaus.org
RHSBL disabled
RelayRequiresAuth enabled
SBLList multi.surbl.org,black.uribl.com,rhsbl.sorbs.net
TCPPort 25 465 587
TCPProxyPort 25
TlsBeforeAuth 1
UBLList multi.surbl.org:8-16-64-128,black.uribl.com,rhsbl.sorbs.net
URIBL disabled
VirusScan enabled
access public public public
qplogsumm disabled
status enabled enabled enabled
tnef2mime enabled

Templates

Upgrade Considerations

A-Record DNSBL Services

Some DNSBL services - notably b.barracudacentral.org - provide their results using a DNS "A" record instead of a DNS TXT record. The dnsbl plugin requires these services to include a colon (":") in dnsbl_zones - however, SME used to use a colon the server separator in the configuration database. In order to support these A-Record DNSBL services, the separator for RBLList, SBLList, and the new UBLList is now a comma.
You can now configure b.barracudacentral.org using (note the single quotes):
config setprop qpsmtpd RBLList server1,server2,'b.barracudacentral.org:Blocked - see <http://bbl.barracudacentral.com/q.cgi?ip=%IP%>'

DKIM & DMARC

DKIM & DMARC are now supported natively by SME Server. To enable these you will need to configure appropriate DNS records in your public DNS server.
There are forum reports of problems for users who had DKIM enabled using the DKIM contrib.

URIBL

qpsmtpd now supports URIBL - the ability to block emails that contain known malicious URLs within the body of the email. This service is disabled by default.
Enable URIBL with the default services using:
config setprop qpsmtpd URIBL enabled
 signal-event email-update
Note: If your SME server is using high traffic external DNS forwarders like google (8.8.8.8 / 8.8.4.4), opendns (208.67.222.222 / 208.67.220.220), or any large ISP's (Cox, Comcast, Verizon), enabling URIBL may block all incoming email. This will only affect you if you have configured a DNS forwarder in server-manager -- a default SME server installation does its own direct DNS lookups and would not be affected unless you receive over 250,000 emails per day.
Read more at http://uribl.com/refused.shtml

"Naughty" plugin

SME Server is now using the 'naughty' plugin which allows early plugins like dnsbl, earlytalker, etc to indicate that the email should be rejected at a later point in the interaction. This allows the server to log extra information for denied emails. Specifically, emails denied by dnsbl will now show the sender and recipient email addresses in the qpsmtpd log

Plugins

Below is a list of all the plugins from /usr/share/qpsmtpd/plugins on a freshly updated SME 9.2 server.

+ New in SME 9.2
* Improved or changed in SME 9.2
U Unused (by default) in SME Server
E Extra / External Configuration Required
CW Contrib or Wiki page exists that uses this plugin
SM Can be configured using server-manager
DB Can be configured using db variables
AC Auto-configured by SME Server