aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fetchmail-FAQ.html12
-rw-r--r--fetchmail.c2
-rw-r--r--fetchmail.man8
-rwxr-xr-xfetchmailconf4
-rwxr-xr-xindexgen.sh4
-rw-r--r--interface.c23
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">&lt;esr@snark.thyrsus.com&gt;</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);