Postfix 5.7.1 Unable to relay [deliver internal mail directly]

6,753

You should migrate sendmail's "direct delivery for other host in the same domain" hack to postfix. [You reported use of smart host in both configurations]


sendmail

sendmail.mc

LOCAL_NET_CONFIG
R$* < @ $* .$m. > $*    $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3

postfix

master.cf

transport_maps = hash:/etc/postfix/transport

/etc/postfix/transport (requires compilation with postmap /etc/postfix/transport)

my.domain    :

http://www.postfix.org/postconf.5.html#transport_maps
http://www.postfix.org/transport.5.html

Share:
6,753

Related videos on Youtube

Chris
Author by

Chris

Updated on September 18, 2022

Comments

  • Chris
    Chris almost 2 years

    I have the following scenario:

    • serverA = RHEL5 using Sendmail
    • serverB = RHEL6 using Postfix
    • serverC = RHEL6 using Postfix
    • gwsmtp = relayhost
    • example.com = domain name

    As we are migrating from sendmail to postfix we get some unable to relay errors.

    To explain in detail:

    • From serverA to serverB I can send an email with no problem
    • From serverA to serverC I can send an email with no problem
    • From serverB to ServerA I can not send an email
    • From serverB to serverC I can not send an email

    Sending an email from serverB to serverA I get the following bounce message

    From MAILER-DAEMON  Tue Jul 22 10:45:24 2014
    Return-Path: <>
    X-Original-To: [email protected]
    Delivered-To: [email protected]
    Date: Tue, 22 Jul 2014 10:45:24 +0200 (CEST)
    From: [email protected] (Mail Delivery System)
    Subject: Undelivered Mail Returned to Sender
    To: [email protected]
    Auto-Submitted: auto-replied
    Content-Type: multipart/report; report-type=delivery-status;
            boundary="AF55F20DAA.1406018724/serverB"
    Status: R
    
    Part 1:
    Content-Description: Notification
    Content-Type: text/plain; charset=us-ascii
    
    This is the mail system at host serverB.
    
    I'm sorry to have to inform you that your message could not
    be delivered to one or more recipients. It's attached below.
    
    For further assistance, please send mail to postmaster.
    
    If you do so, please include this problem report. You can
    delete your own text from the attached returned message.
    
                       The mail system
    
    <[email protected]>: host gwsmtp.example.com[10.39.40.164] said: 550
        5.7.1 Unable to relay (in reply to RCPT TO command)
    
    Part 2:
    Content-Description: Delivery report
    Content-Type: message/delivery-status
    
    
    Part 3:
    Content-Description: Undelivered Message
    Content-Type: message/rfc822
    
    From [email protected] Tue Jul 22 10:45:09 2014
    Return-Path: <[email protected]>
    Date: Tue, 22 Jul 2014 10:45:09 +0200
    To: [email protected]
    Subject: test
    User-Agent: Heirloom mailx 12.4 7/29/08
    Content-Type: text/plain; charset=us-ascii
    From: [email protected] (root)
    

    I have the following main.cf config in use on serverB

    mydomain = example.com
    myhostname = serverB
    myorigin = $myhostname
    inet_interfaces = all
    mydestination = $myhostname, localhost.$mydomain, localhost, $myhostname.$mydomain, hpmedtsa, hpmedtsa.$mydomain
    relayhost = gwsmtp.$mydomain
    queue_directory = /var/spool/postfix
    command_directory = /usr/sbin
    daemon_directory = /usr/libexec/postfix
    data_directory = /var/lib/postfix
    mail_owner = postfix
    inet_protocols = all
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    debug_peer_level = 2
    debugger_command =
             PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
             ddd $daemon_directory/$process_name $process_id & sleep 5
    sendmail_path = /usr/sbin/sendmail.postfix
    newaliases_path = /usr/bin/newaliases.postfix
    mailq_path = /usr/bin/mailq.postfix
    setgid_group = postdrop
    html_directory = no
    manpage_directory = /usr/share/man
    sample_directory = /usr/share/doc/postfix-2.6.6/samples
    readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
    transport_maps = hash:/etc/postfix/transport
    

    And this is our sendmail makro on serverA

    divert(-1)dnl
    include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
    VERSIONID(`setup for Red Hat Linux')dnl
    OSTYPE(`linux')dnl
    define(`SMART_HOST',`gwsmtp.example.com')dnl
    LOCAL_NET_CONFIG
    R$* < @ $* .$m. > $*    $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
    define(`confDEF_USER_ID',``8:12'')dnl
    define(`confTO_CONNECT', `1m')dnl
    define(`confTRY_NULL_MX_LIST',true)dnl
    define(`confDONT_PROBE_INTERFACES',true)dnl
    define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
    define(`ALIAS_FILE', `/etc/aliases')dnl
    define(`STATUS_FILE', `/var/log/mail/statistics')dnl
    define(`UUCP_MAILER_MAX', `2000000')dnl
    define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
    define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
    define(`confAUTH_OPTIONS', `A')dnl
    define(`confTO_IDENT', `0')dnl
    FEATURE(`no_default_msa',`dnl')dnl
    FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
    FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
    FEATURE(redirect)dnl
    FEATURE(always_add_domain)dnl
    FEATURE(use_cw_file)dnl
    FEATURE(use_ct_file)dnl
    FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
    FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl
    FEATURE(`blacklist_recipients')dnl
    EXPOSED_USER(`root')dnl
    DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
    FEATURE(`accept_unresolvable_domains')dnl
    LOCAL_DOMAIN(`localhost.localdomain')dnl
    MAILER(smtp)dnl
    MAILER(procmail)dnl
    

    We try to have the same configuration in postfix as we have in sendmail. Any help would be greatly appreciated.

    • Chris
      Chris almost 10 years
      I just solved it to only use relay host for certain domains and directly send the email for internal hostnames.
  • Chris
    Chris almost 10 years
    Thanks. I removed relayhost from the main.cfg and added an entry to the transport map. Everything should send directly except for the specified domain it should relay. That works perfectly. I will accept your answer.