The Exim FAQ

Contents   Previous   Next

97. SUN SYSTEMS

Q9701:  Exim builds fine with gcc on SunOS 4 but crashes inside sscanf().

A9701:  Make sure you are linking with the GNU ld linker and not the system version of ld.

Q9702:  How can I get rid of spurious ^M (carriage return) characters in messages sent from CDE dtmail?

A9702:  CDE dtmail passes messages to Exim via the command line interface with lines terminated by CRLF, instead of the Unix convention of just LF. This should not be a problem if you are using Exim release 4.21 or later, as changes were made to detect CRLF line endings.

In earlier versions of Exim, CR would be treated as just another data character. There was, however, a command line option called -dropcr which caused Exim to ignore all CR characters in an incoming non-SMTP message. (This option is a no-op in current releases.)

If you are using a pre-4.21 version of Exim, you should configure dtmail to add this option to the command it uses to call Exim (using the path /usr/lib/sendmail). However, it has been reported that it isn't possible to change this call from dtmail by any official means. An alternative approach is to replace /usr/lib/sendmail by a filtering script that removes the spurious CRs from the input before passing it to Exim.

Q9703:  On SunOS 4 Exim crashes when looking up domains in the DNS that have more than 10 A records.

A9703:  There are Sun library patches to fix this. It is not Exim's problem. For 4.13_U1 the patch is 101558-xx; for 4.1.3 the patch is 100891-xx. From the README: 1054748 ftp, ping dump core when connecting to a host with multiple DNS A records. An alternative is to build another resolver library - such as the ones that are part of the bind distribution - and explicitly link against those.

Q9704:  I am experiencing mailbox locking problems with Sun's mailtool used over a network.

A9704:  Under the Expert settings of mailtool is a option to turn on Use network aware mail file locking. By default dtmail has this set, but mailtool doesn't. You should set it. The help info on dtmail has this to say about it:

Mailer tries to prevent two different instances of itself from opening the same mail file at the same time through a technique that detects this access when both instances of Mailer and the file are all on the same machine. A network-aware mail file locking protocol is available that uses ToolTalk to coordinate instances of Mailer running from more than one machine, or mail files accessed over the network. Mailer can only change this option when first opening a mail file.

If you are using the SunOS4 version of mailtool, this apparently doesn't work. The only thing which does seem to work it getting the user to hit the done button to make it release the lock.

Q9705:  Exim has been crashing on my Solaris x86 system, apparently while running DBM functions.

A9705:  The use of ndbm with gcc has caused problems on x86 Solaris systems. Try changing one or the other; using either DB with gcc, or Sun's WS compiler with ndbm, has fixed this in the past.

Q9706:  The exiwhat utility isn't working for me on a Solaris 2 system.

A9706:  Have you got /usr/ucb on your path? If so, it is probably picking up the wrong version of the ps command. The exiwhat script is built on Solaris to expect the normal Solaris version of ps.

Q9707:  How do I stop Sun's dtcm from hanging?

A9707:  From qmail's FAQ: There is a novice programming error in dtcm, known as “failure to close the output side of the pipe in the child.” Sun has, at the time of this writing, not yet provided a patch.

Q9708:  I want Exim to use only the resolver (i.e. ignore /etc/hosts), but don't want to alter the nsswitch.conf file in Solaris 2.

A9708:  You need to rebuild Exim after fiddling with OS/os.h-SunOS5:

   #define gethostbyaddr res_gethostbyaddr
   #define gethostbyname res_gethostbyname
   #define endhostent res_endhostent
   #define endnetent res_endnetent
   #define gethostent res_gethostent
   #define getnetbyaddr res_getnetbyaddr
   #define getnetbyname res_getnetbyname
   #define getnetent res_getnetent
   #define sethostent res_sethostent
   #define setnetent res_setnetent

Note that -lnsl is still needed in the Makefile as it contains code used by the NIS lookup and also the inet_addr() function that Exim uses.

Q9709:  When I try to compile Exim 4.x on Solaris 2.5.1 I get an error along the lines of no such field in struct as 'value.ui32'.

A9709:  Look in the Exim file OS/os.h-SunOS5.h for the line

   #define LOAD_AVG_FIELD          value.ui32

and change ui32 to ul (that's u followed by the letter ell, not the digit one). Solaris 2.5.1 is getting very old now...



Contents   Previous   Next