diff options
-rw-r--r-- | fetchmail-FAQ.html | 12 | ||||
-rw-r--r-- | fetchmail.c | 2 | ||||
-rw-r--r-- | fetchmail.man | 8 | ||||
-rwxr-xr-x | fetchmailconf | 4 | ||||
-rwxr-xr-x | indexgen.sh | 4 | ||||
-rw-r--r-- | interface.c | 23 |
6 files changed, 36 insertions, 17 deletions
diff --git a/fetchmail-FAQ.html b/fetchmail-FAQ.html index a47342d6..947699b1 100644 --- a/fetchmail-FAQ.html +++ b/fetchmail-FAQ.html @@ -10,7 +10,7 @@ <table width="100%" cellpadding=0><tr> <td width="30%">Back to <a href="index.html">Fetchmail Home Page</a> <td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a> -<td width="30%" align=right>$Date: 2000/11/26 18:20:28 $ +<td width="30%" align=right>$Date: 2000/12/01 06:22:45 $ </table> <HR> <H1>Frequently Asked Questions About Fetchmail</H1> @@ -558,6 +558,14 @@ necessary to do this just to get a link working. Get the link working first, observe the actual address range you see on connections, and add an <code>interface</code> option (if you need one) later.<P> +You can't use ETRN if you have a dynamic IP address (your ISP changes +your IP address occasionally, possibly with every connect). You need +to have your own registered domain and a definite IP address +registered for that domain. The server needs to be configured to +accept mail for your domain but then queue it to forward to your +machine. ETRN just tells to server to flush its queue for your +domain. Fetchmail doesn't actually get the mail in that case.<p> + If you're using a dynamic-IP configuration, one other (non-fetchmail) problem you may run into with outgoing mail is that some sites will bounce your email because the hostname your giving them isn't real @@ -2963,7 +2971,7 @@ install Linux on your server...<p> <table width="100%" cellpadding=0><tr> <td width="30%">Back to <a href="index.html">Fetchmail Home Page</a> <td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a> -<td width="30%" align=right>$Date: 2000/11/26 18:20:28 $ +<td width="30%" align=right>$Date: 2000/12/01 06:22:45 $ </table> <P><ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com"><esr@snark.thyrsus.com></A></ADDRESS> diff --git a/fetchmail.c b/fetchmail.c index 8f270c0c..fc5371b2 100644 --- a/fetchmail.c +++ b/fetchmail.c @@ -677,7 +677,7 @@ int main(int argc, char **argv) #ifdef POP3_ENABLE /* leave the UIDL state alone if there have been any errors */ if (!check_only && - ((querystatus==PS_SUCCESS) || (querystatus==PS_NOMAIL))) + ((querystatus==PS_SUCCESS) || (querystatus==PS_NOMAIL) || (querystatus==PS_MAXFETCH))) uid_swap_lists(ctl); #endif /* POP3_ENABLE */ diff --git a/fetchmail.man b/fetchmail.man index a9b8a21e..e7aead68 100644 --- a/fetchmail.man +++ b/fetchmail.man @@ -458,7 +458,7 @@ See USER AUTHENTICATION below for a complete description. .B \-I <specification>, --interface <specification> (Keyword: interface) Require that a specific interface device be up and have a specific local -IP address (or range) before polling. Frequently +or remote IP address (or range) before polling. Frequently .I fetchmail is used over a transient point-to-point TCP/IP link established directly to a mailserver via SLIP or PPP. That is a relatively secure channel. @@ -2027,9 +2027,9 @@ mailserver. This creates a risk that name/password pairs might be snaffled with a packet sniffer or more sophisticated monitoring software. Under Linux and FreeBSD, the --interface option can be used to restrict polling to availability of a specific interface device -with a specific local IP address, but snooping is still possible if -(a) either host has a network device that can be opened in promiscuous -mode, or (b) the intervening network link can be tapped. +with a specific local or remote IP address, but snooping is still +possible if (a) either host has a network device that can be opened +in promiscuous mode, or (b) the intervening network link can be tapped. .PP Use of the %F or %T escapes in an mda option could open a security hole, because they pass text manipulable by an attacker to a shell diff --git a/fetchmailconf b/fetchmailconf index ba8b6e09..ef295ce6 100755 --- a/fetchmailconf +++ b/fetchmailconf @@ -4,7 +4,7 @@ # by Eric S. Raymond, <esr@snark.thyrsus.com>. # Requires Python with Tkinter, and the following OS-dependent services: # posix, posixpath, socket -version = "1.32" +version = "1.33" from Tkinter import * from Dialog import * @@ -110,7 +110,7 @@ class Server: ('plugin', 'String'), ('plugout', 'String'), ('netsec', 'String'), - ('principal', 'String')), + ('principal', 'String')) def dump(self, folded): res = "" diff --git a/indexgen.sh b/indexgen.sh index 60f45df1..189ee6ef 100755 --- a/indexgen.sh +++ b/indexgen.sh @@ -2,8 +2,8 @@ # # indexgen.sh -- generate current version of fetchmail home page. # -goldvers="5.5.0" -goldname="5.5.0" +goldvers="5.6.0" +goldname="5.6.0" version=`sed -n <Makefile.in "/VERSION *= */s/VERSION *= *\([^ ]*\)/\1/p"` date=`date "+%d %b %Y"` diff --git a/interface.c b/interface.c index bca8b0e8..0df520f9 100644 --- a/interface.c +++ b/interface.c @@ -138,13 +138,14 @@ static int _get_ifinfo_(int socket_fd, FILE *stats_file, const char *ifname, if (!(request.ifr_flags & IFF_RUNNING)) return(FALSE); - /* get the IP address */ + /* get the (local) IP address */ strcpy(request.ifr_name, ifname); if (ioctl(socket_fd, SIOCGIFADDR, &request) < 0) return(FALSE); ifinfo->addr = ((struct sockaddr_in *) (&request.ifr_addr))->sin_addr; - /* get the PPP destination IP address */ + /* get the PPP destination (remote) IP address */ + ifinfo->dstaddr.s_addr = 0; strcpy(request.ifr_name, ifname); if (ioctl(socket_fd, SIOCGIFDSTADDR, &request) >= 0) ifinfo->dstaddr = ((struct sockaddr_in *) @@ -665,10 +666,20 @@ int interface_approve(struct hostdata *hp, flag domonitor) hp->pollname, hp->interface); return(FALSE); } - /* check the IP address (range) */ - if ((ifinfo.addr.s_addr & - hp->interface_pair->interface_mask.s_addr) != - hp->interface_pair->interface_address.s_addr) { + /* check the IP addresses (range) */ + if (!( + /* check remote IP address */ + ((ifinfo.dstaddr.s_addr != 0) && + (ifinfo.dstaddr.s_addr & + hp->interface_pair->interface_mask.s_addr) == + hp->interface_pair->interface_address.s_addr) + || + /* check local IP address */ + ((ifinfo.addr.s_addr & + hp->interface_pair->interface_mask.s_addr) == + hp->interface_pair->interface_address.s_addr) + ) ) + { (void) report(stdout, _("skipping poll of %s, %s IP address excluded\n"), hp->pollname, hp->interface); |