<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Postfix%3A_SMTP_Authentication_for_Clients_%28en%29</id>
	<title>Postfix: SMTP Authentication for Clients (en) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Postfix%3A_SMTP_Authentication_for_Clients_%28en%29"/>
	<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=Postfix:_SMTP_Authentication_for_Clients_(en)&amp;action=history"/>
	<updated>2026-05-13T12:57:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.4</generator>
	<entry>
		<id>https://onnocenter.or.id/wiki/index.php?title=Postfix:_SMTP_Authentication_for_Clients_(en)&amp;diff=71396&amp;oldid=prev</id>
		<title>Onnowpurbo: Created page with &quot;==Prepare Dovecot==  Edit to configure Dovecot as the authentication server for Postfix:   vim /etc/dovecot/conf.d/10-master.conf  Ensure the following:   ## The listener is a...&quot;</title>
		<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=Postfix:_SMTP_Authentication_for_Clients_(en)&amp;diff=71396&amp;oldid=prev"/>
		<updated>2025-01-04T00:19:37Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Prepare Dovecot==  Edit to configure Dovecot as the authentication server for Postfix:   vim /etc/dovecot/conf.d/10-master.conf  Ensure the following:   ## The listener is a...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Prepare Dovecot==&lt;br /&gt;
&lt;br /&gt;
Edit to configure Dovecot as the authentication server for Postfix:&lt;br /&gt;
&lt;br /&gt;
 vim /etc/dovecot/conf.d/10-master.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the following:&lt;br /&gt;
&lt;br /&gt;
 ## The listener is added under the service auth section ##&lt;br /&gt;
 service auth { &lt;br /&gt;
     unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
         mode = 0660&lt;br /&gt;
         user = postfix&lt;br /&gt;
         group = postfix&lt;br /&gt;
     } ##end listener&lt;br /&gt;
 } ## end service auth&lt;br /&gt;
&lt;br /&gt;
The definition above will open the socket /var/spool/postfix/private/auth with permission 0660 for Postfix.&lt;br /&gt;
&lt;br /&gt;
 vim /etc/dovecot/conf.d/10-auth.conf&lt;br /&gt;
&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
&lt;br /&gt;
Plain authentication mechanism for Postfix.&lt;br /&gt;
&lt;br /&gt;
Restart Dovecot:&lt;br /&gt;
&lt;br /&gt;
 service dovecot restart&lt;br /&gt;
&lt;br /&gt;
==Generate Certificate==&lt;br /&gt;
&lt;br /&gt;
Create a certificate for SSL:&lt;br /&gt;
&lt;br /&gt;
 mkdir /etc/postfix/ssl&lt;br /&gt;
 cd /etc/postfix/ssl/&lt;br /&gt;
 openssl req -new -nodes -keyout onnocenter.id.key -out onnocenter.id.csr&lt;br /&gt;
&lt;br /&gt;
You will see:&lt;br /&gt;
&lt;br /&gt;
 Generating a 2048 bit RSA private key&lt;br /&gt;
 ......................+++&lt;br /&gt;
 ..................+++&lt;br /&gt;
 writing new private key to 'onnocenter.id.key'&lt;br /&gt;
 -----&lt;br /&gt;
 You are about to be asked to enter information that will be incorporated&lt;br /&gt;
 into your certificate request.&lt;br /&gt;
 What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;
 There are quite a few fields but you can leave some blank&lt;br /&gt;
 For some fields there will be a default value,&lt;br /&gt;
 If you enter '.', the field will be left blank.&lt;br /&gt;
 -----&lt;br /&gt;
 Country Name (2 letter code) [AU]:ID&lt;br /&gt;
 State or Province Name (full name) [Some-State]:DKI&lt;br /&gt;
 Locality Name (eg, city) []:Jakarta&lt;br /&gt;
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:OnnoCenter&lt;br /&gt;
 Organizational Unit Name (eg, section) []:IT&lt;br /&gt;
 Common Name (e.g. server FQDN or YOUR name) []:onnocenter.id&lt;br /&gt;
 Email Address []:onno@onnocenter.id&lt;br /&gt;
 &lt;br /&gt;
 Please enter the following 'extra' attributes&lt;br /&gt;
 to be sent with your certificate request&lt;br /&gt;
 A challenge password []:password&lt;br /&gt;
 An optional company name []:OnnoCenter&lt;br /&gt;
&lt;br /&gt;
==Preparing Postfix==&lt;br /&gt;
&lt;br /&gt;
Insert SASL parameters into the config file:&lt;br /&gt;
&lt;br /&gt;
 vim /etc/postfix/main.cf&lt;br /&gt;
&lt;br /&gt;
 #### SASL ####&lt;br /&gt;
 &lt;br /&gt;
 ## specify SASL type ##&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 &lt;br /&gt;
 ## path to the SASL socket relative to postfix spool directory i.e. /var/spool/postfix ##&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 &lt;br /&gt;
 ## postfix appends the domain name for SASL logins that do not have the domain part ##&lt;br /&gt;
 smtpd_sasl_local_domain = $myhostname&lt;br /&gt;
 &lt;br /&gt;
 ## SASL default policy ##&lt;br /&gt;
 smtpd_sasl_security_options = noanonymous&lt;br /&gt;
 &lt;br /&gt;
 ## for legacy application compatibility ##&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 &lt;br /&gt;
 ## enable SMTP auth ##&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 &lt;br /&gt;
 ## smtp checks ##&lt;br /&gt;
 ## these checks are based on first match, so sequence is important ##&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
&lt;br /&gt;
Summarized as:&lt;br /&gt;
&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_security_options = noanonymous&lt;br /&gt;
 smtpd_sasl_local_domain = $myhostname&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 ...&lt;br /&gt;
 smtpd_recipient_restrictions = &lt;br /&gt;
    permit_sasl_authenticated, &lt;br /&gt;
    permit_mynetworks, &lt;br /&gt;
    check_relay_domains&lt;br /&gt;
&lt;br /&gt;
Insert SSL/TLS parameters into the config file:&lt;br /&gt;
&lt;br /&gt;
 vim /etc/postfix/main.cf&lt;br /&gt;
&lt;br /&gt;
 #### SSL/TLS parameters ####&lt;br /&gt;
 &lt;br /&gt;
 ## 'encrypt' will enforce SSL. Not recommended for live servers ##&lt;br /&gt;
 smtpd_tls_security_level = may &lt;br /&gt;
 #smtpd_tls_security_level = encrypt &lt;br /&gt;
 &lt;br /&gt;
 smtpd_tls_received_header = yes &lt;br /&gt;
 smtpd_tls_auth_only = no &lt;br /&gt;
 &lt;br /&gt;
 ## loglevel 3 or 4 can be used during troubleshooting ##&lt;br /&gt;
 smtpd_tls_loglevel = 1 &lt;br /&gt;
 &lt;br /&gt;
 ## path to certificate and key file ##&lt;br /&gt;
 smtpd_tls_key_file = /etc/postfix/ssl/onnocenter.id.key&lt;br /&gt;
 smtpd_tls_cert_file = /etc/postfix/ssl/onnocenter.id.crt&lt;br /&gt;
 smtpd_use_tls=yes   &lt;br /&gt;
 &lt;br /&gt;
 ## server will announce STARTTLS ##&lt;br /&gt;
 smtp_tls_note_starttls_offer = yes &lt;br /&gt;
 &lt;br /&gt;
 smtpd_tls_session_cache_timeout = 3600s &lt;br /&gt;
 tls_random_source = dev:/dev/urandom&lt;br /&gt;
&lt;br /&gt;
Summarized as:&lt;br /&gt;
&lt;br /&gt;
 smtpd_tls_security_level = encrypt &lt;br /&gt;
 smtpd_tls_received_header = yes &lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_loglevel = 1 &lt;br /&gt;
 smtpd_tls_key_file = /etc/postfix/ssl/onnocenter.id.key&lt;br /&gt;
 smtpd_tls_cert_file = /etc/postfix/ssl/onnocenter.id.crt&lt;br /&gt;
 smtpd_use_tls=yes &lt;br /&gt;
 smtp_tls_note_starttls_offer = yes&lt;br /&gt;
 smtpd_tls_session_cache_timeout = 3600s &lt;br /&gt;
 tls_random_source = dev:/dev/urandom&lt;br /&gt;
&lt;br /&gt;
==Restart Postfix==&lt;br /&gt;
&lt;br /&gt;
 service postfix restart&lt;br /&gt;
&lt;br /&gt;
==Check Relay==&lt;br /&gt;
&lt;br /&gt;
 $ telnet mail.example.tst 25&lt;br /&gt;
&lt;br /&gt;
 ehlo mail.example.tst&lt;br /&gt;
 250-mail.example.tst&lt;br /&gt;
 250-PIPELINING &lt;br /&gt;
 250-SIZE 10240000 &lt;br /&gt;
 250-VRFY &lt;br /&gt;
 250-ETRN &lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-AUTH PLAIN LOGIN &lt;br /&gt;
 250-AUTH=PLAIN LOGIN &lt;br /&gt;
 250-ENHANCEDSTATUSCODES &lt;br /&gt;
 250-8BITMIME &lt;br /&gt;
 250 DSN &lt;br /&gt;
&lt;br /&gt;
==Check SMTP AUTH Support==&lt;br /&gt;
&lt;br /&gt;
Perform:&lt;br /&gt;
&lt;br /&gt;
 telnet onnocenter.id 25&lt;br /&gt;
&lt;br /&gt;
You should see:&lt;br /&gt;
&lt;br /&gt;
 Connected to onnocenter.id.&lt;br /&gt;
 Escape character is '^]'.&lt;br /&gt;
 220 onnocenter.id ESMTP&lt;br /&gt;
 ehlo onnocenter.id&lt;br /&gt;
 250-onnocenter.id&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 10240000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS&lt;br /&gt;
 250-AUTH PLAIN LOGIN&lt;br /&gt;
 250-AUTH=PLAIN LOGIN&lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250 DSN&lt;br /&gt;
&lt;br /&gt;
Generate password:&lt;br /&gt;
&lt;br /&gt;
 printf 'username\0username\0password' | mmencode&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 perl -MMIME::Base64 -e 'print encode_base64(&amp;quot;username\0username\0password&amp;quot;);'&lt;br /&gt;
&lt;br /&gt;
Proceed as:&lt;br /&gt;
&lt;br /&gt;
 printf 'test\0test\0testpass' | mmencode&lt;br /&gt;
 dGVzdAB0ZXN0AHRlc3RwYXNz&lt;br /&gt;
&lt;br /&gt;
Then, dGVzdAB0ZXN0AHRlc3RwYXNz is the Base64 encoded string that contains username and password.&lt;br /&gt;
&lt;br /&gt;
Test authentication:&lt;br /&gt;
&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is '^]'.&lt;br /&gt;
 220 onnocenter.id ESMTP&lt;br /&gt;
 ehlo onnocenter.id&lt;br /&gt;
 250-onnocenter.id&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 10240000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS&lt;br /&gt;
 250-AUTH PLAIN LOGIN&lt;br /&gt;
 250-AUTH=PLAIN LOGIN&lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250 DSN&lt;br /&gt;
 AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz&lt;br /&gt;
 235 2.7.0 Authentication successful&lt;br /&gt;
 quit&lt;br /&gt;
 221 2.0.0 Bye&lt;br /&gt;
&lt;br /&gt;
==References== &lt;br /&gt;
&lt;br /&gt;
* http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailclients.html&lt;br /&gt;
* http://xmodulo.com/enable-user-authentication-postfix-smtp-server-sasl.html&lt;br /&gt;
* http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailclients.html&lt;br /&gt;
* http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailclients.html&lt;/div&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
</feed>