how to generate new

Posted on 2009-02-19
Last Modified: 2013-12-17
Sendmail was working properly prior to any of my poking around. In the past, I  had made changes to directly, bypassing entirely. But for reasons unknown I broke from convention and decided to follow some advice to use the file to make changes. In the process of this, I managed to lose my old file.

I was making changes to and when I ran m4 > a vague error was encountered:

NONE:0: m4: ERROR: end of file in argument list

And my old file was overwritten. Now I can't restart sendmail without interrupting email to/from the server. Can anyone help me out here?

Question by:jaw0807
    LVL 13

    Expert Comment

    This is an error that usually occurs when you have tick marks (single quotes)  identifying lists of items in your configuration file, and occasionally one of the tick marks is the wrong one.

    Remember that the tick at the beginning should be a back-tick... The one next to the number 1 on your keyboard.
    So you should have something that looks like this:   `this is correct'
    Not something that looks like this: 'this is wrong'

    Check in your file and see if you can find that.
    LVL 13

    Expert Comment

    I found a link to a page where someone else showed their problem and then another person showed a correction with an explanation:


    Author Comment

    I just went line by line through the code and didn't notice anything.. then again I haven't had much sleep, so maybe I'm missing something. Attaching the file below:

    dnl #
    dnl # This is the sendmail macro config file for m4. If you make changes to
    dnl # /etc/mail/, you will need to regenerate the
    dnl # /etc/mail/ file by confirming that the sendmail-cf package is
    dnl # installed and then performing a
    dnl #
    dnl #     make -C /etc/mail
    dnl #
    VERSIONID(`setup for linux')dnl
    dnl #
    dnl # Do not advertize sendmail version.
    dnl #
    dnl define(`confSMTP_LOGIN_MSG', `$j Sendmail; $b')dnl
    dnl #
    dnl # default logging level is 9, you might want to set it higher to
    dnl # debug the configuration
    dnl #
    dnl define(`confLOG_LEVEL', `9')dnl
    dnl #
    dnl # Uncomment and edit the following line if your outgoing mail needs to
    dnl # be sent out through an external mail server:
    dnl #
    dnl define(`SMART_HOST', `smtp.your.provider')dnl
    dnl #
    define(`confDEF_USER_ID', ``8:12'')dnl
    dnl define(`confAUTO_REBUILD')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
    dnl #
    dnl # The following allows relaying if the user authenticates, and disallows
    dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links
    dnl #
    dnl define(`confAUTH_OPTIONS', `A p')dnl
    dnl # 
    dnl # 
    dnl # PLAIN is the preferred plaintext authentication method and used by
    dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do
    dnl # use LOGIN. Other mechanisms should be used if the connection is not
    dnl # guaranteed secure.
    dnl # Please remember that saslauthd needs to be running for AUTH. 
    dnl #
    dnl #
    dnl # Rudimentary information on creating certificates for sendmail TLS:
    dnl #     cd /usr/share/ssl/certs; make sendmail.pem
    dnl # Complete usage:
    dnl #     make -C /usr/share/ssl/certs usage
    dnl #
    dnl define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
    dnl define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
    dnl define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
    dnl define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl
    dnl #
    dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP's
    dnl # slapd, which requires the file to be readble by group ldap
    dnl #
    dnl define(`confDONT_BLAME_SENDMAIL', `groupreadablekeyfile')dnl
    dnl #
    dnl define(`confTO_QUEUEWARN', `4h')dnl
    dnl define(`confTO_QUEUERETURN', `5d')dnl
    dnl define(`confQUEUE_LA', `12')dnl
    dnl define(`confREFUSE_LA', `18')dnl
    define(`confTO_IDENT', `0')dnl
    dnl FEATURE(delay_checks)dnl
    FEATURE(`no_default_msa', `dnl')dnl
    FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
    FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
    FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
    dnl #
    dnl # The following limits the number of processes sendmail can fork to accept 
    dnl # incoming messages or process its message queues to 20.) sendmail refuses 
    dnl # to accept connections once it has reached its quota of child processes.
    dnl #
    dnl define(`confMAX_DAEMON_CHILDREN', `20')dnl
    dnl #
    dnl # Limits the number of new connections per second. This caps the overhead 
    dnl # incurred due to forking new sendmail processes. May be useful against 
    dnl # DoS attacks or barrages of spam. (As mentioned below, a per-IP address 
    dnl # limit would be useful but is not available as an option at this writing.)
    dnl #
    dnl define(`confCONNECTION_RATE_THROTTLE', `3')dnl
    dnl #
    dnl # The -t option will retry delivery if e.g. the user runs over his quota.
    dnl #
    FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
    FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
    dnl #
    dnl # For using Cyrus-IMAPd as POP3/IMAP server through LMTP delivery uncomment
    dnl # the following 2 definitions and activate below in the MAILER section the
    dnl # cyrusv2 mailer.
    dnl #
    dnl define(`confLOCAL_MAILER', `cyrusv2')dnl
    dnl define(`CYRUSV2_MAILER_ARGS', `FILE /var/lib/imap/socket/lmtp')dnl
    dnl #
    dnl # The following causes sendmail to only listen on the IPv4 loopback address
    dnl # and not on any other network devices. Remove the loopback
    dnl # address restriction to accept email from the internet or intranet.
    dnl #
    DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
    dnl #
    dnl # The following causes sendmail to additionally listen to port 587 for
    dnl # mail from MUAs that authenticate. Roaming users who can't reach their
    dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
    dnl # this useful.
    dnl #
    dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
    dnl #
    dnl # The following causes sendmail to additionally listen to port 465, but
    dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed
    dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't
    dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS
    dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps
    dnl # when SSL is enabled-- STARTTLS support is available in version 1.1.1.
    dnl #
    dnl # For this to work your OpenSSL certificates must be configured.
    dnl #
    dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
    dnl #
    dnl # The following causes sendmail to additionally listen on the IPv6 loopback
    dnl # device. Remove the loopback address restriction listen to the network.
    dnl #
    dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl
    dnl #
    dnl # enable both ipv6 and ipv4 in sendmail:
    dnl #
    dnl DAEMON_OPTIONS(`Name=MTA-v4, Family=inet, Name=MTA-v6, Family=inet6')
    dnl #
    dnl # We strongly recommend not accepting unresolvable domains if you want to
    dnl # protect yourself from spam. However, the laptop and users on computers
    dnl # that do not have 24x7 DNS do need this.
    dnl #
    dnl #
    dnl FEATURE(`relay_based_on_MX')dnl
    dnl # 
    dnl # Also accept email sent to "localhost.localdomain" as local email.
    dnl # 
    dnl #
    dnl # The following example makes mail from this host and any additional
    dnl # specified domains appear to be sent from
    dnl #
    dnl #MASQUERADE_AS(`')dnl
    dnl #
    dnl # masquerade not just the headers, but the envelope as well
    dnl #
    dnl FEATURE(masquerade_envelope)dnl
    dnl #
    dnl # masquerade not just, but @* as well
    dnl #
    dnl FEATURE(masquerade_entire_domain)dnl
    dnl #
    dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
    dnl MAILER(cyrusv2)dnl

    Open in new window

    LVL 13

    Expert Comment

    Here's a few things that caught my eye.

    Check line 28... why do you have double-ticks around the 8:12?

    Lines 151 and 153 show the feature names in tick marks, but then lines 167 and 171 do not... Not sure if that is intentional or if it's supposed to be that way.
    LVL 19

    Assisted Solution

    Did you do this;
    > dnl #     make -C /etc/mail

    to create the


    Accepted Solution

    @dhoffman_98: I've looked at several files and they all have that syntax. Odd, I know, but it seems to be normal.

    @jools: Yes, I tried make -C before m4, but the system gave errors about sendmail-cf. But you did get me thinking, so I updated my sendmail-cf rpm to match the version of sendmail (for some reason or another different versions were installed?). After that both m4 and make -C worked for generating a new file.
    LVL 13

    Expert Comment

    Glad it worked out for you, although a bit dissapointed to see how ungrateful you were with your decision on points. Moves like that leave results that may cause your questions to get less responses in the future.

    Featured Post

    What Should I Do With This Threat Intelligence?

    Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

    Join & Write a Comment

    The Microsoft Exchange server database may become damaged or corrupted due to many reasons, such as system failure. When this happens, it is usually urgent to restore the system to a stable and working state. There are different symptoms and causes …
    The purpose of this article is to fix the unknown display problem in Linux Mint operating system. After installing the OS if you see Display monitor is not recognized then we can install "MESA" utilities to fix this problem or we can install additio…
    In this video we show how to create an Address List in Exchange 2013. We show this process by using the Exchange Admin Center. Log into Exchange Admin Center.: First we need to log into the Exchange Admin Center. Navigate to the Organization >> Ad…
    In this video we show how to create an email address policy in Exchange 2013. We show this process by using the Exchange Admin Center. Log into Exchange Admin Center.:  First we need to log into the Exchange Admin Center. Navigate to the Mail Flow…

    728 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    15 Experts available now in Live!

    Get 1:1 Help Now