Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I uncommented the "submission" section in /etc/postfix/master.cf, and my firewall is open on port 587.

I get the following error when trying to submit a message via port 587 with TLS:

Sep 30 13:41:05 mailer postfix/smtpd[7577]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory
Sep 30 13:41:05 mailer postfix/smtpd[7577]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory
Sep 30 13:41:05 mailer postfix/smtpd[7577]: warning: SASL authentication failure: no secret in database
Sep 30 13:41:05 mailer postfix/smtpd[7577]: warning: unknown[66.109.xxx.xxx]: SASL CRAM-MD5 authentication failed: authentication failure

I have saslauthd working fine for port 25. Here's the contents of /etc/postfix/sasl/smtpd.conf:

pwcheck_method: saslauthd
auxprop_plugin: sasldb
saslauthd_path: /var/run/saslauthd/mux
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

I thought I should copy this file into another in the same directory and call it submission.conf, but that doesn't seem to have done anything.

I've restarted saslauthd and postfix with no effect.

Here's my /etc/postfix/main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = mailer.domain.com
#mydomain = mailer.domain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mailer.domain.com 
relayhost = 
mynetworks = 66.109.xxx.xxx, 127.0.0.0/8, 66.45.29.0/24, 66.9.31.0/24
mailbox_size_limit = 0
#smtpd_client_restrictions = permit_mynetworks, reject
#smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
recipient_delimiter = +
inet_interfaces = all
notify_classes = bounce, 2bounce, delay, policy protocol, resource, software

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous,noplaintext
smtpd_sasl_application_name = smtpd
smtpd_sasl_local_domain = mailer.rdny.com
broken_sasl_auth_clients = no

smtpd_recipient_restrictions = permit_mynetworks,reject_unlisted_recipient,reject_non_fqdn_sender,reject_unknown_sender_domain,permit_sasl_authenticated,reject_unauth_destination,check_policy_service inet:127.0.0.1:60000,reject

Ideally, I'd like saslauthd to work on both port 25 & 587. Can anyone give me some guidance as to how to accomplish this?

EDIT: Here's my master.cf as well.

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       -       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
    -o smtp_fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
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}

### dkimproxy filter - see http://dkimproxy.sourceforge.net/postfix-outbound-howto.html
#
# modify the default submission service to specify a content filter
# and restrict it to local clients and SASL authenticated clients only
#
smtp  inet  n     -       n       -       -       smtpd
    -o smtpd_etrn_restrictions=reject
    -o smtpd_sasl_auth_enable=yes
    -o content_filter=dksign:[127.0.0.1]:10028
    -o receive_override_options=no_address_mappings
    -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

# specify the location of the DKIM signing proxy
# Note: the smtp_discard_ehlo_keywords option requires a recent version of
# Postfix. Leave it off if your version does not support it.
dksign    unix  -       -       n       -       10      smtp
    -o smtp_send_xforward_command=yes
    -o smtp_discard_ehlo_keywords=8bitmime,starttls

# service for accepting messages FROM the DKIM signing proxy
127.0.0.1:10029 inet  n  -      n       -       10      smtpd
    -o content_filter=
    -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8
share|improve this question
    
Could you include your master.cf as well please? –  djhowell Sep 30 '09 at 18:59
    
@djhowell - Added. –  neezer Sep 30 '09 at 19:41
    
This page points to the fact that postfix is chroot jailed as the possible problem: kloopy.com/344_Postfix__SASL2__unable_to_open_Berkeley_db –  djhowell Sep 30 '09 at 20:27
    
I've done this, but I get the same error. Any more suggestions? –  neezer Sep 30 '09 at 20:40

2 Answers 2

up vote 0 down vote accepted

Your SASL authentication was probably never working correctly: The log excerpt shows a source IP of 66.109.x.y, and this one is in mynetworks, too. Since in your smtpd_recipient_restrictions your permit_mynetworks precedes permit_sasl_authenticated, your test client probably never had to authenticate itself.

Please set the fifth column for submission and smtpd to "n" in master.cf to remove the chroot for these two services and restart (not reload!) Postfix - prior to verifying that /etc/sasldb2 exists and that the postfix user can read it (and make sure it contains valid login data!).

share|improve this answer
    
I'm pretty sure SASL was working correctly; my test machine happened to be one that I already included in mynetworks, but I have other machines on other IPs that can authenticate (ex., client=c-98-231-83-226.hsd1.fl.comcast.net[98.231.83.226], sasl_method=CRAM-MD5, sasl_username=agent@mailer.xxx.com), and successfully send mail. Interestingly enough, when I tried from another machine not in mynetworks on port 587, I get an error in my client saying that the server doesn't support CRAM-MD5. But it works on port 25. ?? –  neezer Oct 1 '09 at 15:25
    
You have two entries for smtpd in your master.cf- the second one is added in the stanza where you configure dksign. As I said, remove the chroot setting from your submission service (and get your two stmpd instances sorted out!) –  Stefan Förster Oct 4 '09 at 7:18

Does it work if you skip all that -o smptd_ stuff under submission? I'd test relaying without those settings even though you may briefly be an open relay. Once you know you can actually relay on port 587 I'd start adding them back one at a time.

You may also want to set smtpd_tls_loglevel = 3 in your main.cf. Remember to comment it out later.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.