This allowed removal of mts/smtp/hosts.c.
rm -f $@
$(SED) -e 's,%mts%,$(MTS),' \
-e 's,%mailspool%,$(mailspool),' \
- -e 's,%etcdir%,$(sysconfdir),' \
-e 's,%smtpservers%,$(smtpservers),' \
- < $(srcdir)/etc/mts.conf.in > $@
+ < $(srcdir)/etc/mts.conf.in > $@
etc/mhn.defaults: $(srcdir)/etc/mhn.defaults.sh $(MHNSEARCHPROG)
rm -f $@
sbr_libdtimep_a_SOURCES = sbr/dtimep.l
sbr_libdtimep_a_CFLAGS = $(sbr_libmh_a_CPPFLAGS) $(DISABLE_UNUSED_MACROS_WARNING)
-mts_libmts_a_SOURCES = mts/smtp/hosts.c mts/smtp/smtp.c
+mts_libmts_a_SOURCES = mts/smtp/smtp.c
##
## Our rules for generating man pages (both the rule for man.sed and
fi
@echo rebuilding with AM_CFLAGS=--coverage . . .
@(make clean && make AM_CFLAGS=--coverage) > /dev/null && \
- make check AM_CFLAGS=--coverage
+ make check AM_CFLAGS=--coverage
@for i in `find . -name '*.gcda'`; do \
gcov -p -o `echo $$i | $(SED) 's%\\(.*\\)/%\\1 %'`; \
done
be removed in the future.
- Added support for readline editing and command/filename completion at
the WhatNow? prompt
+- The hostable option of mts.conf is no longer needed and has been removed.
#
# nmh mail transport interface customization file.
-#
-# Check the mh-tailor(5) man page for a list of
-# all the available options for this file.
+#
+# Check the mh-tailor(5) man page for descriptions of available options.
#
# The delivery method to use. Supported values are `smtp' and `sendmail'.
# When `sendmail', nmh will pipe messages directly to the sendmail program.
mts: %mts%
-# The exceptions file for /etc/hosts used by
-# `post' to try to find official names.
-hostable: %etcdir%/hosts
-
# Name that nmh considers `local'. If not set, nmh will
# query the system for this value (gethostname, etc...).
#localname: foo.bar.com
*/
char *LocalName(int);
char *SystemName(void);
-char *OfficialName(char *);
/*
* prototypes for some routines in uip
This is useful for handling admin, dummy, and guest logins.
.RE
.SS "SMTP support"
-These options are only available if you set
+This option is only available if you set
.B mts
to
.BR smtp .
.PP
-.BR hostable :
-%etcdir%/hosts
-.RS 5
-The exceptions file for /etc/hosts used by
-.B post
-to try to find
-official names. The format of this file is quite simple:
-.PP
-.IP 1. 4
-Comments are surrounded by sharp (`#') and newline.
-.IP 2. 4
-Words are surrounded by white space.
-.IP 3. 4
-The first word on the line is the official name of a host.
-.IP 4. 4
-All words following the official names are aliases for that host.
-.RE
-.PP
.BR servers :
localhost
.RS 5
+++ /dev/null
-
-/*
- * hosts.c -- find out the official name of a host
- *
- * This code is Copyright (c) 2002, by the authors of nmh. See the
- * COPYRIGHT file in the root directory of the nmh distribution for
- * complete copyright information.
- */
-
-/*
- * In the SendMail world, we really don't know what the valid
- * hosts are. We could poke around in the sendmail.cf file, but
- * that still isn't a guarantee. As a result, we'll say that
- * everything is a valid host, and let SendMail worry about it.
- */
-
-#include <h/mh.h>
-#include <h/mts.h>
-#include <sys/socket.h>
-#include <netdb.h>
-
-static struct host {
- char *h_name;
- char **h_aliases;
- struct host *h_next;
-} hosts;
-
-
-/*
- * static prototypes
- */
-static int init_hs(void);
-
-
-char *
-OfficialName (char *name)
-{
- unsigned char *p;
- char *q, site[BUFSIZ];
- struct addrinfo hints, *res;
-
- static char buffer[BUFSIZ];
- char **r;
- struct host *h;
-
- for (p = name, q = site; *p && (q - site < (int)sizeof(site) - 1); p++, q++)
- *q = isupper (*p) ? tolower (*p) : *p;
- *q = '\0';
- q = site;
-
- if (!mh_strcasecmp (LocalName(1), site))
- return LocalName(1);
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_flags = AI_CANONNAME;
- hints.ai_family = PF_UNSPEC;
-
- if (getaddrinfo(q, NULL, &hints, &res) == 0) {
- strncpy (buffer, res->ai_canonname, sizeof(buffer));
- buffer[sizeof(buffer) - 1] = '\0';
- freeaddrinfo(res);
- return buffer;
- }
- if (hosts.h_name || init_hs ()) {
- for (h = hosts.h_next; h; h = h->h_next)
- if (!mh_strcasecmp (h->h_name, q)) {
- return h->h_name;
- } else {
- for (r = h->h_aliases; *r; r++)
- if (!mh_strcasecmp (*r, q))
- return h->h_name;
- }
- }
-
- strncpy (buffer, site, sizeof(buffer));
- return buffer;
-}
-
-/*
- * Use hostable as an exception file for those hosts that aren't
- * on the Internet (listed in /etc/hosts). These are usually
- * PhoneNet and UUCP sites.
- */
-
-#define NALIASES 50
-
-static int
-init_hs (void)
-{
- unsigned char *cp;
- char *dp, **q, **r;
- char buffer[BUFSIZ], *aliases[NALIASES];
- register struct host *h;
- register FILE *fp;
-
- if ((fp = fopen (hostable, "r")) == NULL)
- return 0;
-
- h = &hosts;
- while (fgets (buffer, sizeof(buffer), fp) != NULL) {
- if ((cp = strchr(buffer, '#')))
- *cp = 0;
- if ((cp = strchr(buffer, '\n')))
- *cp = 0;
- for (cp = buffer; *cp; cp++)
- if (isspace (*cp))
- *cp = ' ';
- for (cp = buffer; isspace (*cp); cp++)
- continue;
- if (*cp == 0)
- continue;
-
- q = aliases;
- if ((cp = strchr(dp = cp, ' '))) {
- *cp = 0;
- for (cp++; *cp; cp++) {
- while (isspace (*cp))
- cp++;
- if (*cp == 0)
- break;
- if ((cp = strchr(*q++ = cp, ' ')))
- *cp = 0;
- else
- break;
- if (q >= aliases + NALIASES)
- break;
- }
- }
-
- *q = 0;
-
- h->h_next = (struct host *) calloc (1, sizeof(*h));
- h = h->h_next;
- h->h_name = getcpy (dp);
- r = h->h_aliases =
- (char **) calloc ((size_t) (q - aliases + 1), sizeof(*q));
- for (q = aliases; *q; q++)
- *r++ = getcpy (*q);
- *r = 0;
- }
-
- fclose (fp);
- return 1;
-}
done (mhl (argc, argv));
return 1;
}
-
-
-/*
- * Cheat: we are loaded with adrparse, which wants a routine called
- * OfficialName(). We call adrparse:getm() with the correct arguments
- * to prevent OfficialName() from being called. Hence, the following
- * is to keep the loader happy.
- */
-
-char *
-OfficialName(char *name)
-{
- return name;
-}
p->pq_error = getcpy (error);
} else {
if ((c1->c_flags & FACEDFLT) && c2->c_face == NULL) {
- char *h, *o;
- if ((h = mp->m_host) == NULL)
- h = LocalName (0);
- if ((o = OfficialName (h)))
- h = o;
- c2->c_face = concat ("address ", h, " ", mp->m_mbox,
- NULL);
+ char *h = mp->m_host ? mp->m_host : LocalName (0);
+ c2->c_face = concat ("address ", h, " ", mp->m_mbox, NULL);
}
p->pq_text = getcpy (mp->m_text);
mnfree (mp);
if ((cp = getname (cp))) {
if ((mp = getm (cp, NULL, 0, AD_NAME, NULL))) {
- char *h, *o;
- if ((h = mp->m_host) == NULL)
- h = LocalName (0);
- if ((o = OfficialName (h)))
- h = o;
+ char *h = mp->m_host ? mp->m_host : LocalName (0);
c1->c_face = concat ("address ", h, " ", mp->m_mbox, NULL);
}
}
-/*
- * Cheat: we are loaded with adrparse, which wants a routine called
- * OfficialName(). We call adrparse:getm() with the correct arguments
- * to prevent OfficialName() from being called. Hence, the following
- * is to keep the loader happy.
- */
-char *
-OfficialName (char *name)
-{
- return name;
-}
-
-
static int
mh_fputs(char *s, FILE *stream)
{
return 0; /* dead code to satisfy the compiler */
}
-/*
- * Cheat: we are loaded with adrparse, which wants a routine called
- * OfficialName(). We call adrparse:getm() with the correct arguments
- * to prevent OfficialName() from being called. Hence, the following
- * is to keep the loader happy.
- */
-
-char *
-OfficialName (char *name)
-{
- return name;
-}
-
/*
* Check if a message or file contains any non-text parts