From: Matthias Andree Date: Thu, 26 May 2011 21:36:10 +0000 (+0200) Subject: Merge branch 'common-6x' X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=7f75be9056b0c5461c20fcf54f0aae8d19535e12;p=~andy%2Ffetchmail Merge branch 'common-6x' Conflicts: Makefile.am imap.c socket.c --- diff --git a/NEWS b/NEWS index 08319641..a695603a 100644 --- a/NEWS +++ b/NEWS @@ -86,6 +86,10 @@ NOTE THIS IS AN ALPHA RELEASE THAT HAS NOT BEEN THOROUGHLY TESTED! never supported IPv6 (including IPv6-mapped IPv4) either. Non-DNS based alias keywords such as "aka" remain. * Kerberos IV support was removed. +* fetchmail no longer supports SSL v2, nor the corresponding SSL2 option to + --sslproto. SSLv2 is insecure and had been deprecated 15 years ago. fetchmail + will actively forbid SSLv2 negotiation by means of SSL_OP_NO_SSLv2. + To fix Debian Bug#622054. # CHANGES * A foreground fetchmail can now accept a few more options while another copy is @@ -95,23 +99,15 @@ NOTE THIS IS AN ALPHA RELEASE THAT HAS NOT BEEN THOROUGHLY TESTED! fetchmail-6.3.20 (not yet released): -# CHANGES -* fetchmail no longer supports SSL v2, nor the corresponding SSL2 option to - --sslproto. SSLv2 is insecure and had been deprecated 15 years ago. fetchmail - will actively forbid SSLv2 negotiation by means of SSL_OP_NO_SSLv2. - To fix Debian Bug#622054. -* fetchmail now always uses its own MD5 implementation. The library and header - variants are too diverse, and we've been bitten before -- and configure - complains noisily on Cyrus-SASL's RFC1321 md5.h. -* fetchmail now supports an environment variable to suppress marking deleted - messages as seen at the same time, FETCHMAIL_IMAP_DELETED_REMAINS_UNSEEN. - See the manual page for details. Requested by Jonathan Buschmann. -* fetchmail sets Internet domain sockets to "keepalive" mode now. Note that - there is no portable way to configure actual timeouts for this mode, and some - systems only support a system-wide timeout setting. +# SECURITY BUG FIXES +* Fetchmail runs the IMAP STARTTLS or POP3 STLS negotiation with the set timeout + (default five minutes) now. This was reported missing, from fetchmail freezes + beyond a week, by Thomas Jarosch. + SSL-wrapped connections were unaffected by this timeout, so users of older + versions can force ssl-wrapped connections -- if supported by the server -- + with the --ssl command line or ssl rcfile option. # BUG FIXES -* Call strlen() only once when removing CRLF from a line. (Sunil Shetye) * Do not search for UNSEEN messages in ranges. Usually, there are very few new messages and most of the range searches result in nothing. Instead, split the long response to make the IMAP driver think that there are multiple lines of @@ -122,8 +118,22 @@ fetchmail-6.3.20 (not yet released): * Set socket timeouts, to fix hangs during STARTTLS negotiation. Reported by Thomas Jarosch. +# CHANGES +* fetchmail now always uses its own MD5 implementation. The library and header + variants are too diverse, and we've been bitten before -- and configure + complains noisily on Cyrus-SASL's RFC1321 md5.h. +* Call strlen() only once when removing CRLF from a line. (Sunil Shetye) +* fetchmail sets Internet domain sockets to "keepalive" mode now. Note that + there is no portable way to configure actual timeouts for this mode, and some + systems only support a system-wide timeout setting. Thus, fetchmail does not + attempt to tune the time spans of keepalive mode. + # TRANSLATION UPDATES + [cs] Chech (Petr Pisar) + [fr] French (Frédéric Marchal) + [de] German (Matthias Andree) [ja] Japanese (Takeshi Hamasaki) + [pl] Polish (Jakub Bogusz) fetchmail-6.3.19 (released 2010-12-10, 25945 LoC): diff --git a/driver.c b/driver.c index 6d005325..f2cc13c6 100644 --- a/driver.c +++ b/driver.c @@ -1041,6 +1041,7 @@ static int do_session( ctl->sslcommonname : realhost, ctl->server.pollname, &ctl->remotename) == -1) { + set_timeout(0); report(stderr, GT_("SSL connection failed.\n")); err = PS_SOCKET; goto cleanUp; diff --git a/fetchmail.man b/fetchmail.man index 5b7dc6c2..38f86e4d 100644 --- a/fetchmail.man +++ b/fetchmail.man @@ -2745,15 +2745,6 @@ then that name is used as the default local name. Otherwise session ID (this elaborate logic is designed to handle the case of multiple names per userid gracefully). -.IP \fBFETCHMAIL_IMAP_DELETED_REMAINS_UNSEEN\fP -(since v6.3.20): -If this environment variable is set and not empty, fetchmail will NOT mark -messages retrieved through IMAP as \\Seen when they are deleted. This may suppress -delivery notifications on some systems (some versions of HP OpenMail) and change them -to mention "deleted without being read" on others (some versions of Microsoft Exchange). -The default (if this variable is unset or empty) is to mark messages as \\Seen -and \\Deleted at the same time. - .IP \fBFETCHMAIL_INCLUDE_DEFAULT_X509_CA_CERTS\fP (since v6.3.17): If this environment variable is set and not empty, fetchmail will always load diff --git a/imap.c b/imap.c index 5e76801c..6dd51eee 100644 --- a/imap.c +++ b/imap.c @@ -321,7 +321,7 @@ static void imap_canonicalize(char *result, char *raw, size_t maxlen) result[j] = '\0'; } -static void capa_probe(int sock, struct query *ctl) +static int capa_probe(int sock, struct query *ctl) /* set capability variables from a CAPA probe */ { int ok; @@ -351,6 +351,8 @@ static void capa_probe(int sock, struct query *ctl) report(stdout, GT_("Protocol identified as IMAP4 rev 0\n")); } } + else + return ok; /* * Handle idling. We depend on coming through here on startup @@ -368,6 +370,8 @@ static void capa_probe(int sock, struct query *ctl) } peek_capable = TRUE; + + return PS_SUCCESS; } static int do_authcert (int sock, const char *command, const char *name) @@ -403,7 +407,8 @@ static int imap_getauth(int sock, struct query *ctl, char *greeting) else expunge_period = 1; - capa_probe(sock, ctl); + if ((ok = capa_probe(sock, ctl))) + return ok; /* * If either (a) we saw a PREAUTH token in the greeting, or @@ -433,9 +438,9 @@ static int imap_getauth(int sock, struct query *ctl, char *greeting) * whether TLS is mandatory or opportunistic unless SSLOpen() fails * (see below). */ if (gen_transact(sock, "STARTTLS") == PS_SUCCESS - && SSLOpen(sock, ctl->sslcert, ctl->sslkey, "tls1", ctl->sslcertck, + && (set_timeout(mytimeout), SSLOpen(sock, ctl->sslcert, ctl->sslkey, "tls1", ctl->sslcertck, ctl->sslcertfile, ctl->sslcertpath, ctl->sslfingerprint, commonname, - ctl->server.pollname, &ctl->remotename) != -1) + ctl->server.pollname, &ctl->remotename)) != -1) { /* * RFC 2595 says this: @@ -450,7 +455,8 @@ static int imap_getauth(int sock, struct query *ctl, char *greeting) * Now that we're confident in our TLS connection we can * guarantee a secure capability re-probe. */ - capa_probe(sock, ctl); + if ((ok = capa_probe(sock, ctl))) + return ok; if (outlevel >= O_VERBOSE) { report(stdout, GT_("%s: upgrade to TLS succeeded.\n"), commonname); @@ -458,9 +464,11 @@ static int imap_getauth(int sock, struct query *ctl, char *greeting) } else if (must_tls(ctl)) { /* Config required TLS but we couldn't guarantee it, so we must * stop. */ + set_timeout(0); report(stderr, GT_("%s: upgrade to TLS failed.\n"), commonname); return PS_SOCKET; } else { + set_timeout(0); if (outlevel >= O_VERBOSE) { report(stdout, GT_("%s: opportunistic upgrade to TLS failed, trying to continue\n"), commonname); } @@ -1249,20 +1257,11 @@ static int imap_delete(int sock, struct query *ctl, int number) int ok; /* Select which flags to set on message deletion: */ const char delflags_seen[] = "\\Seen \\Deleted"; - const char delflags_unseen[] = "\\Deleted"; static const char *delflags; /* Which environment variable to look for: */ - const char dis_env[] = "FETCHMAIL_IMAP_DELETED_REMAINS_UNSEEN"; - if (!delflags) { - char *tmp; - if ((tmp = getenv(dis_env)) != NULL && *tmp) { - delflags = delflags_unseen; - } else { - /* DEFAULT since many fetchmail versions <= 6.3.X */ - delflags = delflags_seen; - } - } + /* DEFAULT since many fetchmail versions <= 6.3.X */ + delflags = delflags_seen; (void)ctl; /* expunges change the fetch numbers */ diff --git a/po/de.po b/po/de.po index ff91818d..a948a99a 100644 --- a/po/de.po +++ b/po/de.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: fetchmail 6.3.20-pre1\n" "Report-Msgid-Bugs-To: fetchmail-devel@lists.berlios.de\n" -"POT-Creation-Date: 2011-04-11 14:14+0200\n" -"PO-Revision-Date: 2010-12-10 14:20+0100\n" +"POT-Creation-Date: 2011-05-23 20:43+0200\n" +"PO-Revision-Date: 2011-05-23 20:44+0200\n" "Last-Translator: Matthias Andree \n" "Language-Team: Deutsch \n" "Language: \n" @@ -95,51 +95,51 @@ msgid_plural " %d messages %d octets long skipped by fetchmail." msgstr[0] " %d Nachricht, %d Bytes lang, von fetchmail ausgelassen." msgstr[1] " %d Nachrichten, %d Bytes lang, von fetchmail ausgelassen." -#: driver.c:524 +#: driver.c:521 #, c-format msgid "skipping message %s@%s:%d" msgstr "Nachricht %s@%s:%d wird ausgelassen" -#: driver.c:578 +#: driver.c:575 #, c-format msgid "skipping message %s@%s:%d (%d octets)" msgstr "Nachricht %s@%s:%d (%d Bytes) wird ausgelassen" -#: driver.c:594 +#: driver.c:591 msgid " (length -1)" msgstr " (Länge -1)" -#: driver.c:597 +#: driver.c:594 msgid " (oversized)" msgstr " (übergroß)" -#: driver.c:615 +#: driver.c:612 #, c-format msgid "couldn't fetch headers, message %s@%s:%d (%d octets)\n" msgstr "" "Kopfzeilen konnten nicht geholt werden, Nachricht %s@%s:%d (%d Bytes)\n" -#: driver.c:632 +#: driver.c:629 #, c-format msgid "reading message %s@%s:%d of %d" msgstr "Nachricht %s@%s:%d von %d wird gelesen" -#: driver.c:637 +#: driver.c:634 #, c-format msgid " (%d octets)" msgstr " (%d Bytes)" -#: driver.c:638 +#: driver.c:635 #, c-format msgid " (%d header octets)" msgstr " (%d Bytes im Nachrichtenkopf)" -#: driver.c:705 +#: driver.c:702 #, c-format msgid " (%d body octets)" msgstr " (%d Bytes im Nachrichtenkörper)" -#: driver.c:764 +#: driver.c:761 #, c-format msgid "" "message %s@%s:%d was not the expected length (%d actual != %d expected)\n" @@ -147,19 +147,19 @@ msgstr "" "Nachricht %s@%s:%d hatte nicht die erwartete Länge (%d tatsächlich != %d " "erwartet)\n" -#: driver.c:796 +#: driver.c:793 msgid " retained\n" msgstr " aufbewahrt\n" -#: driver.c:806 +#: driver.c:803 msgid " flushed\n" msgstr " gelöscht\n" -#: driver.c:823 +#: driver.c:815 msgid " not flushed\n" msgstr " nicht gelöscht\n" -#: driver.c:841 +#: driver.c:833 #, c-format msgid "fetchlimit %d reached; %d message left on server %s account %s\n" msgid_plural "" @@ -169,40 +169,40 @@ msgstr[0] "" msgstr[1] "" "fetchlimit %d erreicht; %d Nachrichten auf Server %s Konto %s verblieben\n" -#: driver.c:898 +#: driver.c:890 #, c-format msgid "timeout after %d seconds waiting to connect to server %s.\n" msgstr "" "Zeitüberschreitung nach %d Sekunden beim Warten auf Verbindung mit Server " "%s.\n" -#: driver.c:902 +#: driver.c:894 #, c-format msgid "timeout after %d seconds waiting for server %s.\n" msgstr "Zeitüberschreitung nach %d Sekunden beim Warten auf Server %s.\n" -#: driver.c:906 +#: driver.c:898 #, c-format msgid "timeout after %d seconds waiting for %s.\n" msgstr "Zeitüberschreitung nach %d Sekunden beim Warten auf %s.\n" -#: driver.c:911 +#: driver.c:903 #, c-format msgid "timeout after %d seconds waiting for listener to respond.\n" msgstr "" "Zeitüberschreitung nach %d Sekunden beim Warten Antwort des SMTP/LMTP-" "Servers.\n" -#: driver.c:914 +#: driver.c:906 #, c-format msgid "timeout after %d seconds.\n" msgstr "Zeitüberschreitung nach %d Sekunden.\n" -#: driver.c:926 +#: driver.c:918 msgid "Subject: fetchmail sees repeated timeouts" msgstr "Subject: fetchmail erlebt wiederholte Zeitüberschreitungen" -#: driver.c:929 +#: driver.c:921 #, c-format msgid "" "Fetchmail saw more than %d timeouts while attempting to get mail from %s@" @@ -211,7 +211,7 @@ msgstr "" "Fetchmail hat mehr als %d Zeitüberschreitungen erhalten beim Versuch, Mail " "von %s@%s abzuholen.\n" -#: driver.c:933 +#: driver.c:925 msgid "" "This could mean that your mailserver is stuck, or that your SMTP\n" "server is wedged, or that your mailbox file on the server has been\n" @@ -228,85 +228,76 @@ msgstr "" "\n" "Fetchmail wird diese Mailbox nicht mehr abfragen, bis Sie es erneut starten\n" -#: driver.c:959 +#: driver.c:951 #, c-format msgid "pre-connection command terminated with signal %d\n" msgstr "Vor-Verbindungs-Befehl wurde mit Signal %d beendet\n" -#: driver.c:962 +#: driver.c:954 #, c-format msgid "pre-connection command failed with status %d\n" msgstr "Vor-Verbindungs-Befehl scheiterte mit Status %d\n" -#: driver.c:986 +#: driver.c:978 #, c-format msgid "couldn't find HESIOD pobox for %s\n" msgstr "konnte das HESIOD-Postfach für %s nicht finden\n" -#: driver.c:1007 +#: driver.c:999 msgid "Lead server has no name.\n" msgstr "Erster Server hat keinen Namen.\n" -#: driver.c:1034 +#: driver.c:1026 #, c-format msgid "couldn't find canonical DNS name of %s (%s): %s\n" msgstr "konnte kanonischen DNS-Namen von %s (%s) nicht finden: %s\n" -#: driver.c:1081 +#: driver.c:1073 #, c-format msgid "%s connection to %s failed" msgstr "%s-Verbindung zu %s fehlgeschlagen" -#: driver.c:1097 -msgid "Subject: Fetchmail unreachable-server warning." -msgstr "Subject: Fetchmail-Warnung: Server nicht erreichbar." - -#: driver.c:1099 -#, c-format -msgid "Fetchmail could not reach the mail server %s:" -msgstr "Fetchmail konnte keine Mail von %s erhalten:" - -#: driver.c:1128 +#: driver.c:1101 msgid "SSL connection failed.\n" msgstr "SSL-Verbindung fehlgeschlagen.\n" -#: driver.c:1183 +#: driver.c:1156 #, c-format msgid "Lock-busy error on %s@%s\n" msgstr "Lock-beschäftigt-Fehler bei %s@%s\n" -#: driver.c:1187 +#: driver.c:1160 #, c-format msgid "Server busy error on %s@%s\n" msgstr "Server-beschäftigt-Fehler bei %s@%s\n" -#: driver.c:1192 +#: driver.c:1165 #, c-format msgid "Authorization failure on %s@%s%s\n" msgstr "Authentifikationsfehlschlag bei %s@%s%s\n" -#: driver.c:1195 +#: driver.c:1168 msgid " (previously authorized)" msgstr " (vormals autorisiert)" -#: driver.c:1198 +#: driver.c:1171 msgid "For help, see http://www.fetchmail.info/fetchmail-FAQ.html#R15\n" msgstr "" "Hilfe (auf Englisch): siehe http://www.fetchmail.info/fetchmail-FAQ." "html#R15\n" -#: driver.c:1219 +#: driver.c:1192 #, c-format msgid "Subject: fetchmail authentication failed on %s@%s" msgstr "Subject: Fetchmail: Authentifikation fehlgeschlagen bei %s@%s" -#: driver.c:1223 +#: driver.c:1196 #, c-format msgid "Fetchmail could not get mail from %s@%s.\n" msgstr "Fetchmail konnte keine Mail von %s@%s erhalten.\n" # -#: driver.c:1227 +#: driver.c:1200 msgid "" "The attempt to get authorization failed.\n" "Since we have already succeeded in getting authorization for this\n" @@ -321,7 +312,7 @@ msgstr "" "brauchbare Fehlermeldung geliefert hat." # -#: driver.c:1233 +#: driver.c:1206 msgid "" "\n" "However, if you HAVE changed your account details since starting the\n" @@ -343,7 +334,7 @@ msgstr "" "Wiederherstellung des Dienstes keine weiteren Meldungen gesendet." # -#: driver.c:1243 +#: driver.c:1216 msgid "" "The attempt to get authorization failed.\n" "This probably means your password is invalid, but some servers have\n" @@ -365,173 +356,173 @@ msgstr "" "versuchen, eine Verbindung herzustellen. Es werden bis zur\n" "Wiederherstellung des Dienstes keine weiteren Meldungen gesendet." -#: driver.c:1259 +#: driver.c:1232 #, c-format msgid "Repoll immediately on %s@%s\n" msgstr "Sofortige erneute Abfrage von %s@%s\n" -#: driver.c:1264 +#: driver.c:1237 #, c-format msgid "Unknown login or authentication error on %s@%s\n" msgstr "Unbekannter Einlogg- oder Authentifikationsfehler bei %s@%s\n" -#: driver.c:1288 +#: driver.c:1261 #, c-format msgid "Authorization OK on %s@%s\n" msgstr "Authentifikation OK bei %s@%s\n" -#: driver.c:1294 +#: driver.c:1267 #, c-format msgid "Subject: fetchmail authentication OK on %s@%s" msgstr "Subject: Fetchmail: Authentifikation OK bei %s@%s" -#: driver.c:1298 +#: driver.c:1271 #, c-format msgid "Fetchmail was able to log into %s@%s.\n" msgstr "Fetchmail war in der Lage, sich bei %s@%s einzuloggen.\n" # -#: driver.c:1302 +#: driver.c:1275 msgid "Service has been restored.\n" msgstr "Der Dienst ist wieder hergestellt.\n" -#: driver.c:1334 +#: driver.c:1307 #, c-format msgid "selecting or re-polling folder %s\n" msgstr "Ordner %s wird gewählt oder erneut abgefragt\n" -#: driver.c:1336 +#: driver.c:1309 msgid "selecting or re-polling default folder\n" msgstr "Vorgabe-Ordner wird gewählt oder erneut abgefragt\n" -#: driver.c:1348 +#: driver.c:1321 #, c-format msgid "%s at %s (folder %s)" msgstr "%s bei %s (Ordner %s)" -#: driver.c:1351 rcfile_y.y:390 +#: driver.c:1324 rcfile_y.y:390 #, c-format msgid "%s at %s" msgstr "%s bei %s" -#: driver.c:1356 +#: driver.c:1329 #, c-format msgid "Polling %s\n" msgstr "Frage %s ab\n" -#: driver.c:1360 +#: driver.c:1333 #, c-format msgid "%d message (%d %s) for %s" msgid_plural "%d messages (%d %s) for %s" msgstr[0] "%d Nachricht (%d %s) für %s" msgstr[1] "%d Nachrichten (%d %s) für %s" -#: driver.c:1363 +#: driver.c:1336 msgid "seen" msgid_plural "seen" msgstr[0] "gesehene" msgstr[1] "gesehene" -#: driver.c:1366 +#: driver.c:1339 #, c-format msgid "%d message for %s" msgid_plural "%d messages for %s" msgstr[0] "%d Nachricht für %s" msgstr[1] "%d Nachrichten für %s" -#: driver.c:1373 +#: driver.c:1346 #, c-format msgid " (%d octets).\n" msgstr " (%d Bytes).\n" -#: driver.c:1379 +#: driver.c:1352 #, c-format msgid "No mail for %s\n" msgstr "Keine Post für %s\n" -#: driver.c:1412 +#: driver.c:1385 msgid "bogus message count!" msgstr "ungültige Nachrichtenanzahl!" -#: driver.c:1555 +#: driver.c:1528 msgid "socket" msgstr "Socket" -#: driver.c:1558 +#: driver.c:1531 msgid "missing or bad RFC822 header" msgstr "fehlende oder fehlerhafte RFC822-Kopfzeile" -#: driver.c:1561 +#: driver.c:1534 msgid "MDA" msgstr "MDA" -#: driver.c:1564 +#: driver.c:1537 msgid "client/server synchronization" msgstr "Klient/Server-Synchronisation" -#: driver.c:1567 +#: driver.c:1540 msgid "client/server protocol" msgstr "Klient/Server-Protokoll" -#: driver.c:1570 +#: driver.c:1543 msgid "lock busy on server" msgstr "Lock auf Server beschäftigt" -#: driver.c:1573 +#: driver.c:1546 msgid "SMTP transaction" msgstr "SMTP-Transaktion" -#: driver.c:1576 +#: driver.c:1549 msgid "DNS lookup" msgstr "DNS-Nachschlag" -#: driver.c:1579 +#: driver.c:1552 msgid "undefined" msgstr "undefinierter" -#: driver.c:1585 +#: driver.c:1558 #, c-format msgid "%s error while fetching from %s@%s and delivering to SMTP host %s\n" msgstr "%s-Fehler beim Abholen von %s@%s und Auslieferung zum SMTP-Host %s\n" -#: driver.c:1587 +#: driver.c:1560 msgid "unknown" msgstr "unbekannt" -#: driver.c:1589 +#: driver.c:1562 #, c-format msgid "%s error while fetching from %s@%s\n" msgstr "%s-Fehler beim Abholen von %s@%s\n" -#: driver.c:1601 +#: driver.c:1574 #, c-format msgid "post-connection command terminated with signal %d\n" msgstr "Nach-Verbindungs-Befehl wurde mit Signal %d beendet\n" -#: driver.c:1603 +#: driver.c:1576 #, c-format msgid "post-connection command failed with status %d\n" msgstr "Nach-Verbindungs-Befehl scheiterte mit Status %d\n" -#: driver.c:1622 +#: driver.c:1595 msgid "Kerberos V4 support not linked.\n" msgstr "Kerberos-V4-Unterstützung nicht vorhanden.\n" -#: driver.c:1630 +#: driver.c:1603 msgid "Kerberos V5 support not linked.\n" msgstr "Kerberos-V5-Unterstützung nicht vorhanden.\n" -#: driver.c:1641 +#: driver.c:1614 #, c-format msgid "Option --flush is not supported with %s\n" msgstr "Option --flush ist mit %s nicht unterstützt\n" -#: driver.c:1647 +#: driver.c:1620 #, c-format msgid "Option --all is not supported with %s\n" msgstr "Option --all ist mit %s nicht unterstützt\n" -#: driver.c:1656 +#: driver.c:1629 #, c-format msgid "Option --limit is not supported with %s\n" msgstr "Option --limit ist mit %s nicht unterstützt\n" @@ -1786,113 +1777,113 @@ msgstr "ungültige Nachrichtenanzahl in \"%s\"!" msgid "bogus EXPUNGE count in \"%s\"!" msgstr "ungültige Zahl für EXPUNGE in \"%s\"!" -#: imap.c:344 +#: imap.c:348 msgid "Protocol identified as IMAP4 rev 1\n" msgstr "Protokoll identifiziert als IMAP4 rev 1\n" -#: imap.c:350 +#: imap.c:354 msgid "Protocol identified as IMAP4 rev 0\n" msgstr "Protokoll identifiziert als IMAP4 rev 0\n" -#: imap.c:357 +#: imap.c:361 msgid "Protocol identified as IMAP2 or IMAP2BIS\n" msgstr "Protokoll identifiziert als IMAP2 oder IMAP2BIS\n" -#: imap.c:372 +#: imap.c:376 msgid "will idle after poll\n" msgstr "werde nach Abfrage untätig sein\n" -#: imap.c:461 pop3.c:475 +#: imap.c:465 pop3.c:475 #, c-format msgid "%s: upgrade to TLS succeeded.\n" msgstr "%s: Upgrade auf TLS erfolgreich.\n" -#: imap.c:466 pop3.c:480 +#: imap.c:470 pop3.c:480 #, c-format msgid "%s: upgrade to TLS failed.\n" msgstr "%s: Upgrade auf TLS fehlgeschlagen.\n" -#: imap.c:470 +#: imap.c:474 #, c-format msgid "%s: opportunistic upgrade to TLS failed, trying to continue\n" msgstr "" "%s: opportunistisches Upgrade auf TLS fehlgeschlagen, versuche Fortsetzung.\n" -#: imap.c:586 +#: imap.c:590 msgid "Required OTP capability not compiled into fetchmail\n" msgstr "Benötigte OTP-Fähigkeit nicht in fetchmail einkompiliert\n" -#: imap.c:606 pop3.c:555 +#: imap.c:610 pop3.c:555 msgid "Required NTLM capability not compiled into fetchmail\n" msgstr "Benötigte NTLM-Fähigkeit nicht in fetchmail einkompiliert\n" -#: imap.c:615 +#: imap.c:619 msgid "Required LOGIN capability not supported by server\n" msgstr "Benötigte LOGIN-Fähigkeit nicht vom Server unterstützt\n" -#: imap.c:679 +#: imap.c:683 #, c-format msgid "mail expunge mismatch (%d actual != %d expected)\n" msgstr "unerwartete Expunge-Bestätigung (%d tatsächlich != %d erwartet)\n" -#: imap.c:818 +#: imap.c:810 #, c-format msgid "%lu is unseen\n" msgstr "%lu ist ungesehen\n" -#: imap.c:882 pop3.c:841 pop3.c:853 pop3.c:1092 pop3.c:1099 +#: imap.c:860 pop3.c:841 pop3.c:853 pop3.c:1092 pop3.c:1099 #, c-format msgid "%u is unseen\n" msgstr "%u ist ungesehen\n" -#: imap.c:917 imap.c:976 +#: imap.c:895 imap.c:954 msgid "re-poll failed\n" msgstr "erneute Abfrage fehlgeschlagen\n" -#: imap.c:925 imap.c:981 +#: imap.c:903 imap.c:959 #, c-format msgid "%d message waiting after re-poll\n" msgid_plural "%d messages waiting after re-poll\n" msgstr[0] "%d Nachricht wartet nach erneuter Abfrage\n" msgstr[1] "%d Nachrichten warten nach erneuter Abfrage\n" -#: imap.c:942 +#: imap.c:920 msgid "mailbox selection failed\n" msgstr "Postfach-Auswahl fehlgeschlagen\n" -#: imap.c:946 +#: imap.c:924 #, c-format msgid "%d message waiting after first poll\n" msgid_plural "%d messages waiting after first poll\n" msgstr[0] "%d Nachricht wartet nach der ersten Abfrage\n" msgstr[1] "%d Nachrichten warten nach der ersten Abfrage\n" -#: imap.c:960 +#: imap.c:938 msgid "expunge failed\n" msgstr "Säubern fehlgeschlagen\n" -#: imap.c:964 +#: imap.c:942 #, c-format msgid "%d message waiting after expunge\n" msgid_plural "%d messages waiting after expunge\n" msgstr[0] "%d Nachricht wartet nach dem Löschen\n" msgstr[1] "%d Nachrichten warten nach dem Löschen\n" -#: imap.c:1003 +#: imap.c:981 msgid "search for unseen messages failed\n" msgstr "Suche nach ungesehenen Nachrichten fehlgeschlagen\n" -#: imap.c:1008 pop3.c:862 +#: imap.c:986 pop3.c:862 #, c-format msgid "%u is first unseen\n" msgstr "%u ist erste ungesehene\n" -#: imap.c:1092 +#: imap.c:1070 msgid "" "Warning: ignoring bogus data for message sizes returned by the server.\n" msgstr "Warnung: ignoriere falsche Größendaten vom Server.\n" -#: imap.c:1190 imap.c:1197 +#: imap.c:1168 imap.c:1175 #, c-format msgid "Incorrect FETCH response: %s.\n" msgstr "Unpassende Antwort auf FETCH: %s.\n" @@ -2968,54 +2959,59 @@ msgstr "benutze %s (Host %s, Service %s)\n" msgid "execvp(%s) failed\n" msgstr "execvp(%s) fehlgeschlagen\n" -#: socket.c:283 +#: socket.c:211 +#, c-format +msgid "setsockopt(%d, SOL_SOCKET) failed: %s\n" +msgstr "setsockopt(%d, SOL_SOCKET) ist fehlgeschlagen: %s\n" + +#: socket.c:290 #, c-format msgid "getaddrinfo(\"%s\",\"%s\") error: %s\n" msgstr "getaddrinfo(\"%s\",\"%s\")-Fehler: %s\n" -#: socket.c:286 +#: socket.c:293 msgid "Try adding the --service option (see also FAQ item R12).\n" msgstr "Geben Sie die --service-Option an (siehe auch FAQ-Punkt R12).\n" -#: socket.c:300 socket.c:303 +#: socket.c:307 socket.c:310 #, c-format msgid "unknown (%s)" msgstr "unbekannt (%s)" -#: socket.c:306 +#: socket.c:313 #, c-format msgid "Trying to connect to %s/%s..." msgstr "Versuche, mit %s/%s zu verbinden..." -#: socket.c:315 +#: socket.c:322 #, c-format msgid "cannot create socket: %s\n" msgstr "kann Socket nicht erzeugen: %s\n" -#: socket.c:317 +#: socket.c:324 #, c-format msgid "name %d: cannot create socket family %d type %d: %s\n" msgstr "Name %d: kann Socket in Familie %d Typ %d nicht erzeugen: %s\n" -#: socket.c:333 +#: socket.c:343 msgid "connection failed.\n" msgstr "Verbindung fehlgeschlagen.\n" -#: socket.c:335 +#: socket.c:345 #, c-format msgid "connection to %s:%s [%s/%s] failed: %s.\n" msgstr "Verbindung zu %s:%s [%s/%s] fehlgeschlagen: %s.\n" -#: socket.c:336 +#: socket.c:346 #, c-format msgid "name %d: connection to %s:%s [%s/%s] failed: %s.\n" msgstr "Name %d: Verbindung zu %s:%s [%s/%s] fehlgeschlagen: %s.\n" -#: socket.c:342 +#: socket.c:352 msgid "connected.\n" msgstr "verbunden.\n" -#: socket.c:355 +#: socket.c:365 #, c-format msgid "" "Connection errors for this poll:\n" @@ -3024,127 +3020,127 @@ msgstr "" "Verbindungsfehler für diesen Abruf:\n" "%s" -#: socket.c:621 +#: socket.c:631 msgid "Server certificate:\n" msgstr "Server-Zertifikat:\n" -#: socket.c:626 +#: socket.c:636 #, c-format msgid "Certificate chain, from root to peer, starting at depth %d:\n" msgstr "Zertifizierungskette, von der Wurzel zum Server, ab Tiefe %d:\n" -#: socket.c:629 +#: socket.c:639 #, c-format msgid "Certificate at depth %d:\n" msgstr "Zertifikat bei Baumtiefe %d:\n" -#: socket.c:635 +#: socket.c:645 #, c-format msgid "Issuer Organization: %s\n" msgstr "Herausgeber-Organisation: %s\n" -#: socket.c:638 +#: socket.c:648 msgid "Warning: Issuer Organization Name too long (possibly truncated).\n" msgstr "" "Warnung: Herausgeber-Organisations-Name zu lang (möglicherweise " "beschnitten).\n" -#: socket.c:640 +#: socket.c:650 msgid "Unknown Organization\n" msgstr "Unbekannte Organisation\n" -#: socket.c:642 +#: socket.c:652 #, c-format msgid "Issuer CommonName: %s\n" msgstr "Herausgeber-CommonName: %s\n" -#: socket.c:645 +#: socket.c:655 msgid "Warning: Issuer CommonName too long (possibly truncated).\n" msgstr "" "Warnung: Herausgeber-CommonName zu lang (möglicherweise beschnitten).\n" -#: socket.c:647 +#: socket.c:657 msgid "Unknown Issuer CommonName\n" msgstr "Unbekannter Herausgeber-CommonName\n" -#: socket.c:653 +#: socket.c:663 #, c-format msgid "Subject CommonName: %s\n" msgstr "Subjekt-CommonName: %s\n" -#: socket.c:659 +#: socket.c:669 msgid "Bad certificate: Subject CommonName too long!\n" msgstr "Ungültiges Zertifikat: Server-CommonName zu lang!\n" -#: socket.c:665 +#: socket.c:675 msgid "Bad certificate: Subject CommonName contains NUL, aborting!\n" msgstr "Ungültiges Zertifikat: Subject-CommonName enthält NUL, breche ab!\n" -#: socket.c:693 +#: socket.c:703 #, c-format msgid "Subject Alternative Name: %s\n" msgstr "Subject Alternative Name: %s\n" -#: socket.c:699 +#: socket.c:709 msgid "Bad certificate: Subject Alternative Name contains NUL, aborting!\n" msgstr "" "Ungültiges Zertifikat: Subject-Alternative-Name enthält NUL, breche ab!\n" -#: socket.c:716 +#: socket.c:726 #, c-format msgid "Server CommonName mismatch: %s != %s\n" msgstr "Server-CommonName stimmt nicht überein: %s != %s\n" -#: socket.c:723 +#: socket.c:733 msgid "Server name not set, could not verify certificate!\n" msgstr "Server-Name nicht gesetzt, konnte Zertifikat nicht verifizieren!\n" -#: socket.c:728 +#: socket.c:738 msgid "Unknown Server CommonName\n" msgstr "Unbekannter Server-CommonName\n" -#: socket.c:730 +#: socket.c:740 msgid "Server name not specified in certificate!\n" msgstr "Server-Name nicht in Zertifikat spezifiziert!\n" -#: socket.c:742 +#: socket.c:752 msgid "EVP_md5() failed!\n" msgstr "EVP_md5() fehlgeschlagen!\n" -#: socket.c:746 +#: socket.c:756 msgid "Out of memory!\n" msgstr "Kein Speicher mehr frei!\n" -#: socket.c:754 +#: socket.c:764 msgid "Digest text buffer too small!\n" msgstr "Textpuffer für Digest zu klein!\n" -#: socket.c:760 +#: socket.c:770 #, c-format msgid "%s key fingerprint: %s\n" msgstr "%s-Schlüssel-Fingerabdruck: %s\n" -#: socket.c:764 +#: socket.c:774 #, c-format msgid "%s fingerprints match.\n" msgstr "%s-Fingerabdrücke stimmen überein.\n" -#: socket.c:766 +#: socket.c:776 #, c-format msgid "%s fingerprints do not match!\n" msgstr "%s-Fingerabdrücke stimmen nicht überein!\n" -#: socket.c:776 +#: socket.c:786 #, c-format msgid "Server certificate verification error: %s\n" msgstr "Fehler bei Server-Zertifikat-Überprüfung: %s\n" -#: socket.c:783 +#: socket.c:793 #, c-format msgid "unknown issuer (first %d characters): %s\n" msgstr "unbekannter Herausgeber (erste %d Zeichen): %s\n" -#: socket.c:784 +#: socket.c:794 msgid "" "This error usually happens when the server provides an incomplete " "certificate chain, which is nothing fetchmail could do anything about. For " @@ -3156,7 +3152,7 @@ msgstr "" "weitere Information, siehe das mit Fetchmail ausgelieferte Dokument README." "SSL-SERVER.\n" -#: socket.c:793 +#: socket.c:803 #, c-format msgid "" "This means that the root signing certificate (issued for %s) is not in the " @@ -3169,21 +3165,21 @@ msgstr "" "Verzeichnis ausgeführt werden muss. Details sind in der fetchmail-" "Handbuchseite im bei --sslcertpath beschrieben.\n" -#: socket.c:885 +#: socket.c:895 msgid "File descriptor out of range for SSL" msgstr "Datei-Deskriptor außerhalb des Bereichs für SSL" -#: socket.c:899 +#: socket.c:911 #, c-format msgid "Invalid SSL protocol '%s' specified, using default (SSL23).\n" msgstr "" "Ungültiges SSL-Protokoll „%s“ angegeben, benutze Voreinstellung (SSL23).\n" -#: socket.c:992 +#: socket.c:1004 msgid "Certificate/fingerprint verification was somehow skipped!\n" msgstr "Zertifikat-/Fingerabdruck-Überprüfung wurde irgendwie übersprungen!\n" -#: socket.c:1009 +#: socket.c:1021 msgid "" "Warning: the connection is insecure, continuing anyways. (Better use --" "sslcertck!)\n" @@ -3191,30 +3187,30 @@ msgstr "" "Warnung: Die Verbindung ist unsicher, mache trotzdem weiter. (Nehmen Sie " "lieber --sslcertck!)\n" -#: socket.c:1075 +#: socket.c:1063 msgid "Cygwin socket read retry\n" msgstr "Cygwin-Socket-Lese-Wiederholung\n" -#: socket.c:1078 +#: socket.c:1066 msgid "Cygwin socket read retry failed!\n" msgstr "Cygwin-Socket-Lese-Wiederholung fehlgeschlagen!\n" -#: transact.c:71 +#: transact.c:79 #, c-format msgid "mapped address %s to local %s\n" msgstr "Adresse %s auf lokalen Benutzer %s abgebildet\n" -#: transact.c:93 +#: transact.c:101 #, c-format msgid "mapped %s to local %s\n" msgstr "%s auf lokalen Benutzer %s abgebildet\n" -#: transact.c:160 +#: transact.c:168 #, c-format msgid "passed through %s matching %s\n" msgstr "passierte %s und passte auf %s\n" -#: transact.c:230 +#: transact.c:240 #, c-format msgid "" "analyzing Received line:\n" @@ -3223,88 +3219,93 @@ msgstr "" "Received-Zeile wird überprüft:\n" "%s" -#: transact.c:269 +#: transact.c:279 #, c-format msgid "line accepted, %s is an alias of the mailserver\n" msgstr "Zeile akzeptiert, %s ist ein Alias des Mailservers\n" -#: transact.c:275 +#: transact.c:285 #, c-format msgid "line rejected, %s is not an alias of the mailserver\n" msgstr "Zeile abgelehnt. %s ist kein Alias des Mailservers\n" -#: transact.c:349 +#: transact.c:359 msgid "no Received address found\n" msgstr "keine „Received“-Adresse gefunden\n" -#: transact.c:358 +#: transact.c:368 #, c-format msgid "found Received address `%s'\n" msgstr "„Received“-Adresse „%s“ gefunden\n" -#: transact.c:601 +#: transact.c:613 msgid "incorrect header line found - see manpage for bad-header option\n" msgstr "inkorrekte Kopfzeile gefunden - siehe Handbuch unter bad-header\n" -#: transact.c:603 +#: transact.c:615 #, c-format msgid "line: %s" msgstr "Zeile: %s" -#: transact.c:1095 transact.c:1105 +#: transact.c:1107 transact.c:1117 #, c-format msgid "Parsing envelope \"%s\" names \"%-.*s\"\n" msgstr "Analysiere Umschlag \"%s\" Namen \"%-.*s\"\n" -#: transact.c:1120 +#: transact.c:1132 #, c-format msgid "Parsing Received names \"%-.*s\"\n" msgstr "Received-Kopfzeile \"%-.*s\" wird analysiert\n" -#: transact.c:1132 +#: transact.c:1144 msgid "No envelope recipient found, resorting to header guessing.\n" msgstr "" "Kein Empfänger auf dem Umschlag gefunden, muss anhand der Kopfzeilen raten.\n" -#: transact.c:1150 +#: transact.c:1162 #, c-format msgid "Guessing from header \"%-.*s\".\n" msgstr "Rate anhand der Kopfzeile \"%-.*s\".\n" -#: transact.c:1165 +#: transact.c:1177 #, c-format msgid "no local matches, forwarding to %s\n" msgstr "keine lokalen Übereinstimmungen, Weiterleitung an %s\n" -#: transact.c:1180 +#: transact.c:1192 msgid "forwarding and deletion suppressed due to DNS errors\n" msgstr "Weiterleiten und Löschen wegen DNS-Fehlern unterdrückt\n" -#: transact.c:1291 +#: transact.c:1303 msgid "writing RFC822 msgblk.headers\n" msgstr "schreibe RFC822 msgblk.headers\n" -#: transact.c:1310 +#: transact.c:1322 msgid "no recipient addresses matched declared local names" msgstr "keine Empfängeradresse stimmt mit deklarierten lokalen Namen überein" -#: transact.c:1317 +#: transact.c:1329 #, c-format msgid "recipient address %s didn't match any local name" msgstr "Empfängeradresse %s stimmt mit keinem lokalen Namen überein" -#: transact.c:1326 +#: transact.c:1338 msgid "message has embedded NULs" msgstr "Nachricht hat eingebettete NUL-Zeichen" -#: transact.c:1334 +#: transact.c:1346 msgid "SMTP listener rejected local recipient addresses: " msgstr "SMTP-Server lehnte Adressen mit lokalem Empfänger ab: " -#: transact.c:1473 +#: transact.c:1485 msgid "error writing message text\n" msgstr "Fehler beim Schreiben des Nachrichtentextes\n" +#: transact.c:1633 +#, c-format +msgid "Buffer too small. This is a bug in the caller of %s:%lu.\n" +msgstr "Der Puffer ist zu klein. Dies ist ein Fehler im Aufrufer von %s:%lu.\n" + #: uid.c:249 #, c-format msgid "Old UID list from %s:" @@ -3381,3 +3382,9 @@ msgstr "malloc fehlgeschlagen\n" #: xmalloc.c:47 msgid "realloc failed\n" msgstr "realloc fehlgeschlagen\n" + +#~ msgid "Subject: Fetchmail unreachable-server warning." +#~ msgstr "Subject: Fetchmail-Warnung: Server nicht erreichbar." + +#~ msgid "Fetchmail could not reach the mail server %s:" +#~ msgstr "Fetchmail konnte keine Mail von %s erhalten:" diff --git a/pop3.c b/pop3.c index 9c73ae9d..a994f992 100644 --- a/pop3.c +++ b/pop3.c @@ -439,9 +439,9 @@ static int pop3_getauth(int sock, struct query *ctl, char *greeting) * whether TLS is mandatory or opportunistic unless SSLOpen() fails * (see below). */ if (gen_transact(sock, "STLS") == PS_SUCCESS - && SSLOpen(sock, ctl->sslcert, ctl->sslkey, "tls1", ctl->sslcertck, + && (set_timeout(mytimeout), SSLOpen(sock, ctl->sslcert, ctl->sslkey, "tls1", ctl->sslcertck, ctl->sslcertfile, ctl->sslcertpath, ctl->sslfingerprint, commonname, - ctl->server.pollname, &ctl->remotename) != -1) + ctl->server.pollname, &ctl->remotename)) != -1) { /* * RFC 2595 says this: @@ -456,6 +456,7 @@ static int pop3_getauth(int sock, struct query *ctl, char *greeting) * Now that we're confident in our TLS connection we can * guarantee a secure capability re-probe. */ + set_timeout(0); done_capa = FALSE; ok = capa_probe(sock); if (ok != PS_SUCCESS) { @@ -468,6 +469,7 @@ static int pop3_getauth(int sock, struct query *ctl, char *greeting) } else if (must_tls(ctl)) { /* Config required TLS but we couldn't guarantee it, so we must * stop. */ + set_timeout(0); report(stderr, GT_("%s: upgrade to TLS failed.\n"), commonname); return PS_SOCKET; } else { @@ -476,6 +478,7 @@ static int pop3_getauth(int sock, struct query *ctl, char *greeting) * allowed til post-authentication), so leave it in an unknown * state, mark it as such, and check more carefully if things * go wrong when we try to authenticate. */ + set_timeout(0); connection_may_have_tls_errors = TRUE; if (outlevel >= O_VERBOSE) { diff --git a/socket.c b/socket.c index c2915b6c..8501c0dc 100644 --- a/socket.c +++ b/socket.c @@ -217,14 +217,12 @@ int UnixOpen(const char *path) return -1; } - SockTimeout(sock, mytimeout); + /* Socket opened saved. Usefull if connect timeout + * because it can be closed. + */ + mailserver_socket_temp = sock; - /* Socket opened saved. Usefull if connect timeout - * because it can be closed. - */ - mailserver_socket_temp = sock; - - if (connect(sock, (struct sockaddr *) &ad, sizeof(ad)) < 0) + if (connect(sock, (struct sockaddr *) &ad, sizeof(ad)) < 0) { int olderr = errno; fm_close(sock); /* don't use SockClose, no traffic yet */ @@ -232,9 +230,9 @@ int UnixOpen(const char *path) errno = olderr; sock = -1; } - - /* No connect timeout, then no need to set mailserver_socket_temp */ - mailserver_socket_temp = -1; + + /* No connect timeout, then no need to set mailserver_socket_temp */ + mailserver_socket_temp = -1; return sock; }