On Thu, Jun 23, 2022 at 13:03:02PM -0300, Viktor Dukhovni wrote: > Your Postfix SMTP service chrooted, you need to provide a mux socket > *inside* the chroot jail, or else (simpler) turn off chroot for the > submission services in master.cf.
I researched and changed a few 'y' options to 'n' in master.conforme so now a few processes are no longer chrooted. I sent out a test message from claws-mail and it worked! But I'm not so sure I am a happy camper. Shouldn't I be running everything chrooted for better security? Isn't turning that off a bad idea? > Your Postfix SMTP service chrooted, you need to provide a mux socket > *inside* the chroot jail, or else (simpler) turn off chroot for the > submission services in master.cf. And how exactly do I do that? I found many discussions involving this so-called mux file, but none of them explains how to make a chrooted mailer find the mux file. On Thu, Jun 23, 2022 at 9:34 AM Luc GMail <lucm...@gmail.com> wrote: > On Thu, Jun 23, 2022 at 03:09:36AM -0300, Viktor Dukhovni wrote: > > >> telnet localhost 25 > >> 220 server.mydomain.net ESMTP Postfix (Debian/GNU) > >> AUTH LOGIN > >> 334 VXNlcm5hbWU6 > >> c29tZXVzZXI= > (someuser) > >> 334 UGFzc3dvcmQ6 > >> c29tZXBhc3M= > (somepass) > >> 454 4.7.0 Temporary authentication failure: generic failure > > > If those are "real" credentials, make sure they're > > disabled before you get SASL working, otherwise > > they're liable to get abused. > > Thank you for the reply! > > I was wondering if someone was going to decode them. > No, they are not real. I made those up for this message only and I > actually passed them through base64 before pasting. > Thank you for the warning. > Now I wonder what is the point of requiring b64 hashes when they can be > decoded so easily... > > > As for why authentication is failing, is "saslauthd" actually installed > > and running with a sensible backend (e.g. "-a pam") specified?. > > Yes. > > # ps aux | grep saslauthd > root 32304 0.0 0.2 18364 2512 ? Ss 07:37 0:00 > /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2 > root 32305 0.0 0.0 18364 916 ? S 07:37 0:00 > /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2 > > >> smtpd_sasl_type = cyrus > >> smtpd_sasl_path = smtpd > > > These look OK, but You really should have in main.cf: > > smtpd_tls_auth_only = yes > > smtpd_sasl_auth_enable = no > > I made those changes, and things became more difficult. Now I can't test > authentication on the command line. > > Port 587 says: > AUTH LOGIN > 530 5.7.0 Must issue a STARTTLS command first > > Port 465 says: > AUTH LOGIN > Connection closed by foreign host. > > Port 25 says: > AUTH LOGIN > 503 5.5.1 Error: authentication not enabled > > How do I test credentials now? > > > and then (as you do) enable SASL only for the submission servers in > > master.cf, for which TLS is required. Your test with then be via: > > > openssl s_client -starttls smtp -connect localhost:587 > > It works and generates a lot of output, including a certificate. > > > ---------------------- 8< ------------------ > > # openssl s_client -starttls smtp -connect localhost:587 > CONNECTED(00000003) > Can't use SSL_get_servername > depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1 > verify return:1 > depth=1 C = US, O = Let's Encrypt, CN = R3 > verify return:1 > depth=0 CN = mydomain.net > verify return:1 > Certificate chain > 0 s:CN = mydomain.net > i:C = US, O = Let's Encrypt, CN = R3 > 1 s:C = US, O = Let's Encrypt, CN = R3 > i:C = US, O = Internet Security Research Group, CN = ISRG Root X1 > 2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1 > i:O = Digital Signature Trust Co., CN = DST Root CA X3 > --- > Server certificate > -----BEGIN CERTIFICATE----- > MIIFIjCCBEqgAwIBAgISAwUfG2SSysJMtK3T8EYxHjtC0AYGCSqGSIb3DQEBCwUA > (content elided) > OgPrJFAT+GP94c6XP3JSZEwolyuEMA== > -----END CERTIFICATE----- > subject=CN = mydomain.net > > issuer=C = US, O = Let's Encrypt, CN = R3 > > --- > No client certificate CA names sent > Peer signing digest: SHA256 > Peer signature type: RSA-PSS > Server Temp Key: X25519, 253 bits > SSL handshake has read 4814 bytes and written 396 bytes > Verification: OK > --- > New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 > Server public key is 2048 bit > Secure Renegotiation IS NOT supported > Compression: NONE > Expansion: NONE > No ALPN negotiated > Early data was not sent > Verify return code: 0 (ok) > --- > 250 CHUNKING > --- > Post-Handshake New Session Ticket arrived: > SSL-Session: > Protocol : TLSv1.3 > Cipher : TLS_AES_256_GCM_SHA384 > Session-ID: E0AF(...) > Session-ID-ctx: > Resumption PSK: C49D(...) > PSK identity: None > PSK identity hint: None > SRP username: None > TLS session ticket lifetime hint: 7200 (seconds) > TLS session ticket: > 0000 - d8 4c 06 08 54 c7 24 e3-54 f2 9c d2 46 3b d8 67 > .L..T.$.T...F;.g > 0010 - 5b e6 42 f3 e6 9d 0f 96-ec 0b 7b 0a 30 45 66 92 > [.B.......{.0Ef. > (...) > 00c0 - 3d 4a 15 c2 5b d3 7b d9-f7 af 60 27 d3 6a 03 e5 > =J..[.{...`'.j.. > > Start Time: 1655987062 > Timeout : 7200 (sec) > Verify return code: 0 (ok) > Extended master secret: no > Max Early Data: 0 > --- > read R BLOCK > > ---------------------- >8 ------------------ > > On Wed, Jun 22, 2022 at 4:50 PM Luc GMail <lucm...@gmail.com> wrote: > >> Many thanks for the replies I've got so far. They helped, and now I have >> postfix running with SASL, and both ports 587 and 465 answer on telnet. But >> I still can't authenticate: >> >> telnet localhost 25 >> 220 server.mydomain.net ESMTP Postfix (Debian/GNU) >> AUTH LOGIN >> 334 VXNlcm5hbWU6 >> c29tZXVzZXI= >> 334 UGFzc3dvcmQ6 >> c29tZXBhc3M= >> 454 4.7.0 Temporary authentication failure: generic failure >> >> I created a new user/shell account for the test and I'm using PAM for >> authentication, but those credentials don't work. Trying as root/password >> didn't work either. >> >> My installation method and configuration files have changed a little. I >> am posting them here. >> >> ============ >> INSTALLATION >> ============ >> apt-get install -y certbot python3-certbot-apache >> apt-get install -y libsasl2-2 libsasl2-modules sasl2-bin >> apt-get install -y postfix >> >> cp /ss/xhome/mydomain.net.conf /etc/apache2/sites-available/ >> a2ensite mydomain.net.conf >> a2dissite 000-default >> systemctl reload apache2 >> certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp >> --email postmas...@mydomain.net -d mydomain.net >> # this paragraph creates 2 files: >> # /etc/letsencrypt/live/mydomain.net/fullchain.pem >> # /etc/letsencrypt/live/mydomain.net/privkey.pem >> >> systemctl reload apache2 >> >> cp /root/pfstuff/main.cf /etc/postfix/ >> cp /root/pfstuff/master.cf /etc/postfix/ >> >> echo 'pwcheck_method: saslauthd' > /etc/postfix/sasl/smtpd.conf >> echo 'mech_list: plain login CRAM-MD5 DIGEST-MD5' >> >> /etc/postfix/sasl/smtpd.conf >> >> usermod -a -G sasl postfix >> >> systemctl restart postfix >> ======================== >> >> >> ============ >> MAIN.CF >> ============ >> myhostname = server.mydomain.net >> >> smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) >> biff = no >> append_dot_mydomain = no >> readme_directory = no >> compatibility_level = 2 >> >> smtpd_tls_cert_file=/etc/letsencrypt/live/mydomain.net/fullchain.pem >> smtpd_tls_key_file=/etc/letsencrypt/live/mydomain.net/privkey.pem >> smtpd_tls_auth_only = no >> smtp_use_tls=yes >> smtpd_use_tls=yes >> smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache >> smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache >> smtpd_tls_security_level=may >> smtpd_tls_loglevel = 1 >> smtpd_sasl_auth_enable = yes >> smtp_sasl_mechanism_filter = !gssapi, !login, static:all >> smtpd_sasl_security_options = noanonymous >> smtpd_sasl_tls_security_options = noanonymous >> smtpd_sasl_type = cyrus >> smtpd_sasl_path = smtpd >> smtp_tls_security_level = may >> smtp_tls_loglevel = 1 >> smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 >> smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 >> smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 >> smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 >> >> smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated >> defer_unauth_destination >> alias_maps = hash:/etc/aliases >> alias_database = hash:/etc/aliases >> myorigin = /etc/mailname >> mydestination = $myhostname, mydomain.net, server.mydomain.net, >> localhost.mydomain.net, localhost >> relayhost = >> mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 >> mailbox_command = procmail -a "$EXTENSION" >> mailbox_size_limit = 0 >> recipient_delimiter = + >> inet_interfaces = all >> inet_protocols = all >> ======================== >> >> >> ============ >> MASTER.CF >> ============ >> smtp inet n - y - 1 postscreen >> smtpd pass - - y - - smtpd >> dnsblog unix - - y - 0 dnsblog >> tlsproxy unix - - y - 0 tlsproxy >> submission inet n - y - - smtpd >> -o syslog_name=postfix/submission >> -o smtpd_tls_security_level=encrypt >> -o smtpd_tls_wrappermode=no >> -o smtpd_sasl_auth_enable=yes >> -o smtpd_relay_restrictions=permit_sasl_authenticated,reject >> -o >> smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject >> -o milter_macro_daemon_name=ORIGINATING >> smtps inet n - y - - smtpd >> -o syslog_name=postfix/smtps >> -o smtpd_tls_wrappermode=yes >> -o smtpd_sasl_auth_enable=yes >> -o smtpd_relay_restrictions=permit_sasl_authenticated,reject >> -o >> smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject >> -o milter_macro_daemon_name=ORIGINATING-TLS >> pickup unix n - y 60 1 pickup >> cleanup unix n - y - 0 cleanup >> qmgr unix n - n 300 1 qmgr >> tlsmgr unix - - y 1000? 1 tlsmgr >> rewrite unix - - y - - trivial-rewrite >> bounce unix - - y - 0 bounce >> defer unix - - y - 0 bounce >> trace unix - - y - 0 bounce >> verify unix - - y - 1 verify >> flush unix n - y 1000? 0 flush >> proxymap unix - - n - - proxymap >> proxywrite unix - - n - 1 proxymap >> smtp unix - - y - - smtp >> relay unix - - y - - smtp >> -o syslog_name=postfix/$service_name >> showq unix n - y - - showq >> error unix - - y - - error >> retry unix - - y - - error >> discard unix - - y - - discard >> local unix - n n - - local >> virtual unix - n n - - virtual >> lmtp unix - - y - - lmtp >> anvil unix - - y - 1 anvil >> scache unix - - y - 1 scache >> postlog unix-dgram n - n - 1 postlogd >> >> maildrop unix - n n - - pipe >> flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} >> >> uucp unix - n n - - pipe >> flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail >> ($recipient) >> >> ifmail unix - n n - - pipe >> flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) >> bsmtp unix - n n - - pipe >> flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender >> $recipient >> scalemail-backend unix - n n - 2 pipe >> flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store >> ${nexthop} ${user} ${extension} >> mailman unix - n n - - pipe >> flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py >> ${nexthop} ${user} >> ======================== >> >> >> >> On Tue, Jun 21, 2022 at 5:17 PM Luc GMail <lucm...@gmail.com> wrote: >> >>> Hi. I've been trying to properly install and run postfix with no >>> success. I've read many recipes and instructions and made many attempts and >>> something always fails. >>> >>> What I've accomplished so far: >>> - postfix is running >>> - I can send test mail from the command line (mailx) to an email account >>> elsewhere and the headers confirm it was sent by postfix >>> - telnet mydomain.net 25 replies and is ready for action >>> >>> What I still need: >>> - SSL and/or TLS. Postfix does not bind to port 587 or 465 at all. >>> >>> After all the attempts, I made what I consider to be my own best recipe, >>> the one that seems to get the closest to a working installation: >>> >>> ---------------- 8< ---------------- >>> apt-get install -y certbot python3-certbot-apache >>> apt-get install -y libsasl2-2 libsasl2-modules sasl2-bin >>> apt-get install -y postfix >>> >>> cp /home/me/postfixstuff/mydomain.net.conf /etc/apache2/sites-available/ >>> a2ensite mydomain.net.conf >>> a2dissite 000-default >>> systemctl reload apache2 >>> certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp >>> --email postmas...@mydomain.net -d mydomain.net >>> >>> systemctl reload apache2 >>> >>> cp /home/me/postfixstuff/main.cf /etc/postfix/ >>> >>> systemctl restart postfix >>> tail -n 20 /var/log/mail.log >>> ---------------- >8 ---------------- >>> >>> >>> >>> Here are the contents of my main.cf file: >>> >>> >>> >>> ---------------- 8< ---------------- >>> myhostname = server.mydomain.net >>> smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) >>> biff = no >>> >>> append_dot_mydomain = no >>> >>> readme_directory = no >>> >>> compatibility_level = 2 >>> >>> # TLS parameters >>> smtpd_tls_cert_file=/etc/letsencrypt/live/mydomain.net/fullchain.pem >>> smtpd_tls_key_file=/etc/letsencrypt/live/mydomain.net/privkey.pem >>> smtpd_use_tls=yes >>> smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache >>> smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache >>> smtpd_tls_security_level=may >>> smtpd_tls_loglevel = 1 >>> >>> #Enable TLS Encryption when Postfix sends outgoing emails >>> smtp_tls_security_level = may >>> smtp_tls_loglevel = 1 >>> >>> #Enforce TLSv1.3 or TLSv1.2 >>> smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 >>> smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 >>> smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 >>> smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 >>> >>> smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated >>> defer_unauth_destination >>> alias_maps = hash:/etc/aliases >>> alias_database = hash:/etc/aliases >>> myorigin = /etc/mailname >>> mydestination = $myhostname, mydomain.net, server.mydomain.net, >>> localhost.mydomain.net, localhost >>> relayhost = >>> mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 >>> mailbox_command = procmail -a "$EXTENSION" >>> mailbox_size_limit = 0 >>> recipient_delimiter = + >>> inet_interfaces = all >>> inet_protocols = all >>> ---------------- >8 ---------------- >>> >>> What else do I need to do? >>> >>> Somebody help? Please?! >>> >>>