Loading ...
Sorry, an error occurred while loading the content.

Problem with line which is longer than 256 characters

Expand Messages
  • Rolf E. Sonneveld
    Hi, running: Postfix 2.9.5 Output of uname -a: SunOS hostname 5.10 Generic_147440-27 sun4v sparc sun4v Running multiple instances in a multi-instance setup:
    Message 1 of 4 , Feb 11, 2013
    • 0 Attachment
      Hi,

      running:

      Postfix 2.9.5

      Output of uname -a:
      SunOS hostname 5.10 Generic_147440-27 sun4v sparc sun4v

      Running multiple instances in a multi-instance setup: the instance that
      is used and for which an SMTP client has problems is named postfix-app.

      Output of postconf -n :

      # /opt/postfix/sbin/postmulti -i postfix-app -x postconf -n
      2bounce_notice_recipient = suppdesk@...
      alias_maps = dbm:/opt/postfix-app/etc/aliases
      append_dot_mydomain = no
      authorized_submit_users =
      bounce_notice_recipient = suppdesk@...
      bounce_queue_lifetime = 3d
      command_directory = /opt/postfix/sbin
      config_directory = /opt/postfix-app/etc
      daemon_directory = /opt/postfix/libexec
      data_directory = /opt/postfix-app/lib
      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
      default_transport = smtp
      disable_vrfy_command = yes
      error_notice_recipient = suppdesk@...
      html_directory = no
      inet_protocols = ipv4
      mail_owner = postfix
      mailq_path = /opt/postfix/bin/mailq
      manpage_directory = /usr/local/man
      maximal_queue_lifetime = 4d
      multi_instance_enable = yes
      multi_instance_group = mta
      multi_instance_name = postfix-app
      mydestination = $myhostname
      mydomain = app.example.nl
      myhostname = mta12.app.example.nl
      mynetworks = cidr:/opt/postfix-app/etc/mynetworks
      myorigin = $myhostname
      newaliases_path = /opt/postfix/bin/newaliases
      notify_classes = resource, software, bounce
      queue_directory = /opt/postfix-app/spool
      readme_directory = /opt/postfix/readme
      sample_directory = /opt/postfix/etc
      sendmail_path = /opt/postfix/sbin/sendmail
      setgid_group = postdrop
      smtpd_client_restrictions = check_client_access
      dbm:/opt/postfix-app/etc/access
      smtpd_delay_reject = no
      smtpd_helo_required = yes
      smtpd_recipient_restrictions = permit_mynetworks,reject
      syslog_facility = mail
      syslog_name = postfix-app
      transport_maps = dbm:/opt/postfix-app/etc/transport

      In general, Postfix is running fine and this Postfix instance is also
      running fine. However, there is one SMTP client (of which we are not in
      control), that sends messages with long lines to this server running
      Postfix. There is a problem with the communication between this client
      and the server: whenever the clients sends a message which includes one
      long line (377 characters, excluding the CRLF), the client seems to
      'hang' after character # 256 of this long line is transmitted. Then,
      after some time the connection times out.

      The part of the SMTP DATA that is causing problems is typically
      something like:

      ...
      ------=_Part_5045_26475068.1360013318406
      Content-Type: application/smil; name=smil.xml; charset=UTF-8
      Content-Transfer-Encoding: 7bit
      Content-ID: <smil>
      Content-Location: smil.xml

      <smil><head><layout><root-layout width="240" height="320"/><region
      id="Image" left="0" top="0" width="240" height="220" fit="meet"/><region
      id="Text" left="0" top="220" width="240" height="100"
      fit="meet"/></layout></head><body><par dur="5000ms"><img
      src="cid:_external_images_media_623478$IMAG0503.jpg"
      region="Image"/><text src="text_0.txt" region="Text"/></par></body></smil>
      ------=_Part_5045_26475068.1360013318406
      ...

      On the client side the communication looks like:

      ...
      ...
      ------=_Part_5045_26475068.1360013318406
      Content-Type: application/smil; name=smil.xml; charset=UTF-8
      Content-Transfer-Encoding: 7bit
      Content-ID: <smil>
      Content-Location: smil.xml

      <smil><head><layout><root-layout width="240" height="320"/><region
      id="Image" left="0" top="0" width="240" height="220" fit="meet"/><region
      id="Text" left="0" top="220" width="240" height="100"
      fit="meet"/></layout></head><body><par dur="5000ms"><img src="c421 4.4.2
      mta12.app.example.nl Error: timeout exceeded
      Connection to hostname closed by foreign host.

      And the logfile on the (Postfix) SMTP server side shows:

      Feb 11 22:19:16 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      > smtp. client[10.10.16.132]: 250 2.1.5 Ok
      Feb 11 22:19:24 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      < smtp. client[10.10.16.132]: DATA
      Feb 11 22:19:24 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      > smtp. client[10.10.16.132]: 354 End data with <CR><LF>.<CR><LF>
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      smtp_get: timeout
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      > smtp. client[10.10.16.132]: 421 4.4.2 mta12.app.example.nl Error:
      timeout exceeded
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      match_hostname: smtp. client ~?
      cidr:/opt/postfix-app/etc/mynetworks(0,lock|fold_fix)
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      dict_cidr_lookup: /opt/postfix-app/etc/mynetworks: smtp. client
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      match_hostaddr: 10.10.16.132 ~?
      cidr:/opt/postfix-app/etc/mynetworks(0,lock|fold_fix)
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      dict_cidr_lookup: /opt/postfix-app/etc/mynetworks: 10.10.16.132
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      timeout after DATA (1881 bytes) from smtp. client[10.10.16.132]
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      disconnect from smtp. client[10.10.16.132]
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      master_notify: status 1
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      connection closed
      Feb 11 22:25:11 hostname postfix-app/cleanup[22729]: [ID 197553
      mail.info] 5DB473E9D8: message-id=<31707045.1360013318423.JavaMail@somehost>
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      proxymap stream disconnect
      Feb 11 22:25:11 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      rewrite stream disconnect
      Feb 11 22:26:51 hostname postfix-app/smtpd[22726]: [ID 197553 mail.info]
      idle timeout -- exiting

      As far as I know there is no limitation in Postfix where Postfix would
      not support lines longer than 256 characters during SMTP server
      operation. I assume it will support lines as long as 1,000 positions,
      including CRLF (see RFC5321). Are there any known limitations of this
      kind for the combination of Postfix on Solaris 10 (Sparc), which could
      cause this problem?

      If I telnet to a Redhat Linux system (running Postfix 2.8.0) on port 25
      and I submit the same data with the same long line during SMTP DATA, I
      cannot reproduce this problem. However, if I do a telnet to a neighbor
      Solaris Sparc system (running Postfix 2.8.0) on port 25, I can reproduce
      this problem. So, is the problem Solaris-specific? Is it network-related?

      Any ideas what to check next c.q. how to debug this problem further?

      /rolf
    • Wietse Venema
      ... A tcpdump recording will reveal if the client stops sending or if the server stops reading (it s revealed by TCP receive window size). Once this is known
      Message 2 of 4 , Feb 11, 2013
      • 0 Attachment
        Rolf E. Sonneveld:
        > In general, Postfix is running fine and this Postfix instance is also
        > running fine. However, there is one SMTP client (of which we are not in
        > control), that sends messages with long lines to this server running
        > Postfix. There is a problem with the communication between this client
        > and the server: whenever the clients sends a message which includes one
        > long line (377 characters, excluding the CRLF), the client seems to
        > 'hang' after character # 256 of this long line is transmitted. Then,
        > after some time the connection times out.

        A tcpdump recording will reveal if the client stops sending or if
        the server stops reading (it's revealed by TCP receive window size).
        Once this is known the search can be focused. It could be somethinh
        as stupid as poorly-implemented anti-virus software.

        http://www.postfix.org/DEBUG_README.html#sniffer

        Wietse
      • Rolf E. Sonneveld
        ... thanks for your answer. I did a tcpdump for the session but when analysing it, I could not find a clear cause. At the end of the day, it appeared to have
        Message 3 of 4 , Feb 16, 2013
        • 0 Attachment
          On 02/11/2013 11:36 PM, Wietse Venema wrote:
          > Rolf E. Sonneveld:
          >> In general, Postfix is running fine and this Postfix instance is also
          >> running fine. However, there is one SMTP client (of which we are not in
          >> control), that sends messages with long lines to this server running
          >> Postfix. There is a problem with the communication between this client
          >> and the server: whenever the clients sends a message which includes one
          >> long line (377 characters, excluding the CRLF), the client seems to
          >> 'hang' after character # 256 of this long line is transmitted. Then,
          >> after some time the connection times out.
          > A tcpdump recording will reveal if the client stops sending or if
          > the server stops reading (it's revealed by TCP receive window size).
          > Once this is known the search can be focused. It could be somethinh
          > as stupid as poorly-implemented anti-virus software.
          >
          > http://www.postfix.org/DEBUG_README.html#sniffer

          thanks for your answer. I did a tcpdump for the session but when
          analysing it, I could not find a clear cause. At the end of the day, it
          appeared to have been a cli/tty related limitation (of Solaris?). See
          for a discussion
          https://forums.oracle.com/forums/thread.jspa?messageID=8292168). When
          sending the same data using a perl script it worked without a problem.

          /rolf
        • Wietse Venema
          ... Based on the bits on the wire it is 100% clear whether the client stops sending or whether the receiver stops receiving. Just look at the TCP window.
          Message 4 of 4 , Feb 16, 2013
          • 0 Attachment
            Rolf E. Sonneveld:
            > On 02/11/2013 11:36 PM, Wietse Venema wrote:
            > > Rolf E. Sonneveld:
            > >> In general, Postfix is running fine and this Postfix instance is also
            > >> running fine. However, there is one SMTP client (of which we are not in
            > >> control), that sends messages with long lines to this server running
            > >> Postfix. There is a problem with the communication between this client
            > >> and the server: whenever the clients sends a message which includes one
            > >> long line (377 characters, excluding the CRLF), the client seems to
            > >> 'hang' after character # 256 of this long line is transmitted. Then,
            > >> after some time the connection times out.
            > > A tcpdump recording will reveal if the client stops sending or if
            > > the server stops reading (it's revealed by TCP receive window size).
            > > Once this is known the search can be focused. It could be somethinh
            > > as stupid as poorly-implemented anti-virus software.
            > >
            > > http://www.postfix.org/DEBUG_README.html#sniffer
            >
            > thanks for your answer. I did a tcpdump for the session but when
            > analysing it, I could not find a clear cause.

            Based on the bits on the wire it is 100% clear whether the client
            stops sending or whether the receiver stops receiving. Just look
            at the TCP window.

            Wietse

            > At the end of the day, it
            > appeared to have been a cli/tty related limitation (of Solaris?). See
            > for a discussion
            > https://forums.oracle.com/forums/thread.jspa?messageID=8292168). When
            > sending the same data using a perl script it worked without a problem.
            >
            > /rolf
            >
            >
          Your message has been successfully submitted and would be delivered to recipients shortly.