Ana Guerrero 2024-11-30 12:28:22 +00:00 committed by Git OBS Bridge
commit cfceafd9b3
18 changed files with 275 additions and 211 deletions

View File

@ -6,11 +6,11 @@
# be considered that important.
# 2) use the 501 error code to mark spam - in such a case
# the 'antispam' option should be used
Index: fetchmail-6.4.1/sink.c
Index: fetchmail-6.5.1/sink.c
===================================================================
--- fetchmail-6.4.1.orig/sink.c
+++ fetchmail-6.4.1/sink.c
@@ -536,6 +536,19 @@ static int handle_smtp_report(struct que
--- fetchmail-6.5.1.orig/sink.c
+++ fetchmail-6.5.1/sink.c
@@ -526,6 +526,19 @@ static int handle_smtp_report(struct que
free(responses[0]);
return(PS_TRANSIENT);
@ -30,7 +30,7 @@ Index: fetchmail-6.4.1/sink.c
default:
/* bounce non-transient errors back to the sender */
if (smtperr >= 500 && smtperr <= 599)
@@ -601,7 +614,7 @@ static int handle_smtp_report_without_bo
@@ -591,7 +604,7 @@ static int handle_smtp_report_without_bo
case 553: /* invalid sending domain */
return(PS_REFUSED);

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a6cb4ea863ac61d242ffb2db564a39123761578d3e40d71ce7b6f2905be609d9
size 1220892

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEE3EplW9mTzUhx+oIQ5BKxVu/zhVoFAmW6so4ACgkQ5BKxVu/z
hVpUtw//YQSqqTTXxtZEY3+sq/19wrEcieYuCOq/4HzlIPywfL30uDMHBOnsx5aM
c2CDiaOnvneV4HYUlwARshmdXupY3Wt88t5dHT131FUpl/mhHPERO2yARwgPAVPZ
ouBIGFVG/zvvsMj80znuwkWnedLO4bKfdK5jbKP8MPBE/MDROiC9TgOpRJyiXwV1
os5o9IgTVcsdm6kfoS9RzYYQOFkpzWOqOckd/gUbX7+MXTRZlm8XuFYlT5RhayMv
YDVNiCuhsu8k0rFiouONzSEq0hYhP+jiKUKtLG32TvyiuJjhJdTb/QHikB0bJY5z
SAWQM86Hu6aqR84HxHiHxL6mkoTq390LQ6OasUZll61fp14uS7wFS1MtrS34va9+
VvZFnvPCRWmUc9jAu7lPjwefDcFi9553F+lBi0+B5Pk0LSekNIvR7Wm2FrY8NNYo
t+YgiPTXIGkV2GHLntNXPm2z+EM831UaFE7l4ytrJ3MKexr+eDjhCQGqjn3Oc3eZ
mzYuuekFYDzHiBkEDIZj/NT66zW/6z0mPWoTWHdWHyPedCZR6GKD4mZQC34O/idj
v14RITz1JqEwRKJKQQ9iYETsIXAHH/I9tEFGsUKfGeLQTqPwIh5rmv81wi3os300
b1fZrG6BB0CT4t3CRwB55Tdb39+PD52SdqxzibTTNYwfaW3zqHo=
=M6hf
-----END PGP SIGNATURE-----

BIN
fetchmail-6.5.1.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEE3EplW9mTzUhx+oIQ5BKxVu/zhVoFAmcz6JcACgkQ5BKxVu/z
hVptQA//c7mklRvCJmSIhF91w0XntT5aOoWL19zLLZXBXgU+3YXmhu8sUufaZtVF
ORJpJPvxEuK3g3Ja9rS4q959pM1rTDZ15GvpnF9oXUi62xLEEGzMweU8PIIMu7Ov
AV6kJMJ0jmVEBwRhVnYn18+QgiB33hy6CiHbzKXQafElbSbR+7Cg7C4tPpv2hlfh
BslV/zZIGwDfi6GrlZqfPyd/r8258fhsmUQa/y/HTYm9QCc1DKXfSPzqpb1yZMLe
omOw0IMduE2xn2QsWz2CgdeNO7QPH6qFoM9SJTh3xtI4f7xVb6tLW4vvVpOQb85E
LIUg+NWoqBmLBx2wkLttSld9kDJZFTVksZEa7XcvJGY62tIeLAn/0Y1Ytg6Xpm9H
oihaNZ7vhsB6iwNWOuHxXtJOpvkMfEDmtSQDoT3ier+HA8/+ofiLUrctZ30uh0da
R/AjFDwFD53lbdWmfMpL+ZUHcctSg+3MDaL2AF2eOkxlDf0+zESffncxLLUXnhgR
5eSpxg/CclShPY1kkq6D3UTznwLu4UxsjL2YmQS0jefE4VrJOBFxpExMs2z/tMKn
yRV8JnDWTAHtw1FmynXz0YClXVHSKlf2h4vTUf92hapwvcz2ExhjkLDFiMMi+/jX
+Qlb4iYVUdg5rqvTCTgWoHC4nArbcSSlYrxSQZpjSzUzyJzsSX8=
=fYQt
-----END PGP SIGNATURE-----

View File

@ -8,15 +8,15 @@ Git-commit: dbeee6a0c0fc5392953f38d6f0dcffdeeb8ae141
fetchmail-FAQ.html | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
--- a/fetchmail-FAQ.html
+++ b/fetchmail-FAQ.html
@@ -1949,9 +1949,27 @@ sites.)</p>
<p>Google has started pushing towards more complex authentication
schemes based on OAuth 2.0 that require clients and users
to jump through quite a few hoops, and use web browsers for signing in.
-If this hinders access to your account through fetchmail, you may need to turn on access for "less secure apps" at <a
- href="https://myaccount.google.com/lesssecureapps">https://myaccount.google.com/lesssecureapps</a>.<br/>
-It is disputable whether an application that does not include web
Index: fetchmail-6.5.1/fetchmail-FAQ.html
===================================================================
--- fetchmail-6.5.1.orig/fetchmail-FAQ.html
+++ fetchmail-6.5.1/fetchmail-FAQ.html
@@ -1956,12 +1956,28 @@ authentication schemes based on OAuth 2.
users to jump through quite a few hoops, and use web browsers for
signing in, and software vendors to hand in their software for
sometimes paid reviews. Such is not going to happen for fetchmail.
+
+If this hinders access to your account through fetchmail, you have some
+options:</p>
+<ul>
@ -37,7 +37,12 @@ Git-commit: dbeee6a0c0fc5392953f38d6f0dcffdeeb8ae141
+ But G-suite administrators are more likely to have disabled
+ this option than "App Password"s.</li>
+</ul>
+<p>It is disputable whether an application that does not include web
-If this hinders access to your account through fetchmail, you may
-need to turn on access for "less secure apps", or create an application or service specific password.
-
-For Google, this - at some point in time - used to live at <a
- href="https://myaccount.google.com/lesssecureapps">https://myaccount.google.com/lesssecureapps</a>.<br/>
It is disputable whether an application that does not include web
browsing capabilities or heavy-weight libraries is "less secure" as
Google claims.</p>

View File

@ -11,8 +11,10 @@ Git-commit: c82625858682eb2396b6a49da79e403c6f2b018b
3 files changed, 575 insertions(+), 1 deletion(-)
create mode 100755 contrib/fetchmail-oauth2.py
--- a/contrib/README
+++ b/contrib/README
Index: fetchmail-6.5.1/contrib/README
===================================================================
--- fetchmail-6.5.1.orig/contrib/README
+++ fetchmail-6.5.1/contrib/README
@@ -181,6 +181,12 @@ sendmail 8.11.0 with multidrop.
Watchdog script to check whether fetchmail is working in daemon mode.
@ -26,8 +28,10 @@ Git-commit: c82625858682eb2396b6a49da79e403c6f2b018b
### mold-remover.py
A short python script to remove old read mail from a pop3 mailserver.
Index: fetchmail-6.5.1/contrib/fetchmail-oauth2.py
===================================================================
--- /dev/null
+++ b/contrib/fetchmail-oauth2.py
+++ fetchmail-6.5.1/contrib/fetchmail-oauth2.py
@@ -0,0 +1,567 @@
+#!/usr/bin/python
+#
@ -596,9 +600,11 @@ Git-commit: c82625858682eb2396b6a49da79e403c6f2b018b
+
+if __name__ == '__main__':
+ main(sys.argv)
--- a/fetchmail.man
+++ b/fetchmail.man
@@ -1073,7 +1073,8 @@ External tools are necessary to obtain
Index: fetchmail-6.5.1/fetchmail.man
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.man
+++ fetchmail-6.5.1/fetchmail.man
@@ -1181,7 +1181,8 @@ External tools are necessary to obtain
such tokens. Access tokens often expire fairly quickly (e.g. 1 hour),
and new ones need to be generated from renewal tokens, so the
"passwordfile", "passwordfd", or "pwmd_*" options may be useful. See the

View File

@ -17,9 +17,11 @@ When configured, it will also fall back on trying xoauth2.
rcfile_l.l | 1
8 files changed, 137 insertions(+), 5 deletions(-)
--- a/conf.c
+++ b/conf.c
@@ -288,6 +288,8 @@ void dump_config(struct runctl *runp, st
Index: fetchmail-6.5.1/conf.c
===================================================================
--- fetchmail-6.5.1.orig/conf.c
+++ fetchmail-6.5.1/conf.c
@@ -284,6 +284,8 @@ void dump_config(struct runctl *runp, st
stringdump("auth", "otp");
else if (ctl->server.authenticate == A_MSN)
stringdump("auth", "msn");
@ -28,10 +30,12 @@ When configured, it will also fall back on trying xoauth2.
#ifdef HAVE_RES_SEARCH
booldump("dns", ctl->server.dns);
--- a/fetchmail.c
+++ b/fetchmail.c
@@ -1783,6 +1783,9 @@ static void dump_params (struct runctl *
case A_SSH:
Index: fetchmail-6.5.1/fetchmail.c
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.c
+++ fetchmail-6.5.1/fetchmail.c
@@ -1804,6 +1804,9 @@ static void dump_params (struct runctl *
case A_IMPLICIT:
printf(GT_(" End-to-end encryption assumed.\n"));
break;
+ case A_OAUTHBEARER:
@ -40,17 +44,19 @@ When configured, it will also fall back on trying xoauth2.
}
if (ctl->server.principal != (char *) NULL)
printf(GT_(" Mail service principal is: %s\n"), ctl->server.principal);
--- a/fetchmail.h
+++ b/fetchmail.h
@@ -79,6 +79,7 @@ struct addrinfo;
#define A_SSH 8 /* authentication at session level */
Index: fetchmail-6.5.1/fetchmail.h
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.h
+++ fetchmail-6.5.1/fetchmail.h
@@ -64,6 +64,7 @@ struct addrinfo;
#define A_IMPLICIT 8 /* authentication at session level */
#define A_MSN 9 /* same as NTLM with keyword MSN */
#define A_EXTERNAL 10 /* external authentication (client cert) */
+#define A_OAUTHBEARER 11 /** oauth2 access token (not password) */
/* some protocols or authentication types (KERBEROS, GSSAPI, SSH) don't
* require a password */
@@ -114,6 +115,7 @@ struct addrinfo;
@@ -99,6 +100,7 @@ struct addrinfo;
#define MSGBUFSIZE 8192
#define NAMELEN 64 /* max username length */
@ -58,18 +64,22 @@ When configured, it will also fall back on trying xoauth2.
#define PASSWORDLEN 256 /* max password length */
#define DIGESTLEN 33 /* length of MD5 digest */
--- a/fetchmail.man
+++ b/fetchmail.man
@@ -1006,7 +1006,7 @@ AUTHENTICATION below for details). The
Index: fetchmail-6.5.1/fetchmail.man
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.man
+++ fetchmail-6.5.1/fetchmail.man
@@ -1113,8 +1113,8 @@ AUTHENTICATION below for details). The
\&\fBpassword\fP, \fBkerberos_v5\fP, \fBkerberos\fP (or, for
excruciating exactness, \fBkerberos_v4\fP), \fBgssapi\fP,
\fBcram\-md5\fP, \fBotp\fP, \fBntlm\fP, \fBmsn\fP (only for POP3),
-\fBexternal\fP (only IMAP) and \fBssh\fP.
+\fBexternal\fP (only IMAP), \fBssh\fP and \fBoauthbearer\fP (only IMAP).
-\fBexternal\fP (only IMAP) and \fBimplicit\fP (\fBssh\fP is understood
-as alias for \fBimplicit\fP).
+\fBexternal\fP (only IMAP), \fBimplicit\fP (\fBssh\fP is understood
+as alias for \fBimplicit\fP) and \fBoauthbearer\fP (only IMAP).
When \fBany\fP (the default) is specified, fetchmail tries
first methods that do not require a password (EXTERNAL, GSSAPI, KERBEROS\ IV,
KERBEROS\ 5); then it looks for methods that mask your password
@@ -1031,8 +1031,24 @@ authentication. This option does not wo
@@ -1139,8 +1139,24 @@ authentication. This option does not wo
in line with RFC-2743 and IANA registrations, see
.UR https://www.iana.org/assignments/gssapi-service-names/
Generic Security Service Application Program Interface (GSSAPI)/Kerberos/Simple
@ -96,31 +106,35 @@ When configured, it will also fall back on trying xoauth2.
.SS Miscellaneous Options
.TP
.B \-f <pathname> | \-\-fetchmailrc <pathname>
@@ -2325,7 +2341,9 @@ Legal protocol identifiers for use with
@@ -2475,7 +2491,9 @@ Legal protocol identifiers for use with
.PP
Legal authentication types are 'any', 'password', 'kerberos',
\&'kerberos_v4', 'kerberos_v5' and 'gssapi', 'cram\-md5', 'otp', 'msn'
-(only for POP3), 'ntlm', 'ssh', 'external' (only IMAP).
+(only for POP3), 'ntlm', 'ssh', 'external' (only IMAP),
-(only for POP3), 'ntlm', 'implicit', 'external' (only IMAP).
+(only for POP3), 'ntlm', 'implicit', 'external' (only IMAP),
+'oauthbearer' (only for IMAP; requires authentication token in
+place of password).
The 'password' type specifies
authentication by normal transmission of a password (the password may be
plain text or subject to protocol-specific encryption as in CRAM-MD5);
--- a/fetchmailconf.py
+++ b/fetchmailconf.py
@@ -500,7 +500,7 @@ defaultports = {"auto":None,
Index: fetchmail-6.5.1/fetchmailconf.py
===================================================================
--- fetchmail-6.5.1.orig/fetchmailconf.py
+++ fetchmail-6.5.1/fetchmailconf.py
@@ -499,7 +499,7 @@ defaultports = {"auto":None,
"ODMR":"odmr"}
authlist = ("any", "password", "gssapi", "kerberos", "ssh", "otp",
authlist = ("any", "password", "gssapi", "kerberos", "implicit", "otp",
- "msn", "ntlm")
+ "msn", "ntlm", "oauthbearer")
listboxhelp = {
'title' : 'List Selection Help',
--- a/imap.c
+++ b/imap.c
@@ -26,6 +26,10 @@
Index: fetchmail-6.5.1/imap.c
===================================================================
--- fetchmail-6.5.1.orig/imap.c
+++ fetchmail-6.5.1/imap.c
@@ -24,6 +24,10 @@
#define IMAP4 0 /* IMAP4 rev 0, RFC1730 */
#define IMAP4rev1 1 /* IMAP4 rev 1, RFC2060 */
@ -131,7 +145,7 @@ When configured, it will also fall back on trying xoauth2.
/* global variables: please reinitialize them explicitly for proper
* working in daemon mode */
@@ -51,6 +55,8 @@ static void clear_sessiondata(void) {
@@ -49,6 +53,8 @@ static void clear_sessiondata(void) {
* a const initializer */
const char *const capa_begin = " [CAPABILITY "; const unsigned capa_len = 13;
@ -140,7 +154,7 @@ When configured, it will also fall back on trying xoauth2.
/* mailbox variables initialized in imap_getrange() */
static int count = 0, oldcount = 0, recentcount = 0, unseen = 0, deletions = 0;
static unsigned int startcount = 1;
@@ -266,6 +272,21 @@ static int imap_response(int sock, char
@@ -262,6 +268,21 @@ static int imap_response(int sock, char
if (ok != PS_SUCCESS)
return(ok);
@ -162,7 +176,7 @@ When configured, it will also fall back on trying xoauth2.
/* all tokens in responses are caseblind */
for (cp = buf; *cp; cp++)
if (islower((unsigned char)*cp))
@@ -396,6 +417,69 @@ static int do_imap_ntlm(int sock, struct
@@ -394,6 +415,69 @@ static int do_imap_ntlm(int sock, struct
}
#endif /* NTLM */
@ -232,7 +246,7 @@ When configured, it will also fall back on trying xoauth2.
static void imap_canonicalize(char *result, char *raw, size_t maxlen)
/* encode an IMAP password as per RFC1730's quoting conventions */
{
@@ -582,6 +666,26 @@ static int imap_getauth(int sock, struct
@@ -584,6 +668,26 @@ static int imap_getauth(int sock, struct
for future maintenance */
(void)ok;
@ -259,9 +273,11 @@ When configured, it will also fall back on trying xoauth2.
/* Yahoo hack - we'll just try ID if it was offered by the server,
* and IGNORE errors. */
{
--- a/options.c
+++ b/options.c
@@ -421,6 +421,8 @@ int parsecmdline (int argc /** argument
Index: fetchmail-6.5.1/options.c
===================================================================
--- fetchmail-6.5.1.orig/options.c
+++ fetchmail-6.5.1/options.c
@@ -395,6 +395,8 @@ int parsecmdline (int argc /** argument
ctl->server.authenticate = A_ANY;
else if (strcmp(optarg, "msn") == 0)
ctl->server.authenticate = A_MSN;
@ -270,13 +286,15 @@ When configured, it will also fall back on trying xoauth2.
else {
fprintf(stderr,GT_("Invalid authentication `%s' specified.\n"), optarg);
errflag++;
--- a/rcfile_l.l
+++ b/rcfile_l.l
@@ -106,6 +106,7 @@ cram(-md5)? { SETSTATE(0); yylval.proto
Index: fetchmail-6.5.1/rcfile_l.l
===================================================================
--- fetchmail-6.5.1.orig/rcfile_l.l
+++ fetchmail-6.5.1/rcfile_l.l
@@ -103,6 +103,7 @@ cram(-md5)? { SETSTATE(0); yylval.proto
msn { SETSTATE(0); yylval.proto = A_MSN; return AUTHTYPE;}
ntlm { SETSTATE(0); yylval.proto = A_NTLM; return AUTHTYPE;}
<AUTH>password { SETSTATE(0); yylval.proto = A_PASSWORD; return AUTHTYPE;}
+oauthbearer { SETSTATE(0); yylval.proto = A_OAUTHBEARER; return AUTHTYPE;}
timeout { return TIMEOUT;}
idletimeout { return IDLETIMEOUT;}
envelope { return ENVELOPE; }
qvirtual { return QVIRTUAL; }

View File

@ -13,18 +13,20 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
rcfile_y.y | 6 ++++
6 files changed, 145 insertions(+), 3 deletions(-)
--- a/fetchmail.c
+++ b/fetchmail.c
@@ -451,7 +451,7 @@ int main(int argc, char **argv)
Index: fetchmail-6.5.1/fetchmail.c
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.c
+++ fetchmail-6.5.1/fetchmail.c
@@ -471,7 +471,7 @@ int main(int argc, char **argv)
/* Server won't care what the password is, but there
must be some non-null string here. */
ctl->password = ctl->remotename;
- else
+ else if (!ctl->passwordfile && ctl->passwordfd==-1)
{
netrc_entry *p;
const netrc_entry *p;
@@ -618,8 +618,81 @@ int main(int argc, char **argv)
@@ -649,8 +649,81 @@ int main(int argc, char **argv)
if (ctl->active && !(implicitmode && ctl->server.skip)
&& !NO_PASSWORD(ctl) && !ctl->password)
{
@ -107,7 +109,7 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
fprintf(stderr,
GT_("fetchmail: can't find a password for %s@%s.\n"),
ctl->remotename, ctl->server.pollname);
@@ -1035,6 +1108,10 @@ static void optmerge(struct query *h2, s
@@ -1046,6 +1119,10 @@ static void optmerge(struct query *h2, s
FLAG_MERGE(wildcard);
STRING_MERGE(remotename);
STRING_MERGE(password);
@ -118,17 +120,19 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
STRING_MERGE(mda);
STRING_MERGE(bsmtp);
FLAG_MERGE(listener);
@@ -1099,6 +1176,7 @@ static int load_params(int argc, char **
@@ -1112,6 +1189,7 @@ static int load_params(int argc, char **
def_opts.smtp_socket = -1;
def_opts.smtpaddress = (char *)0;
def_opts.smtpname = (char *)0;
+ def_opts.passwordfd = -1;
def_opts.server.protocol = P_AUTO;
def_opts.server.timeout = CLIENT_TIMEOUT;
def_opts.server.esmtp_name = user;
--- a/fetchmail.h
+++ b/fetchmail.h
@@ -326,6 +326,8 @@ struct query
def_opts.server.idle_timeout = CLIENT_IDLE_TIMEOUT;
Index: fetchmail-6.5.1/fetchmail.h
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.h
+++ fetchmail-6.5.1/fetchmail.h
@@ -312,6 +312,8 @@ struct query
int wildcard; /* should unmatched names be passed through */
char *remotename; /* remote login name to use */
char *password; /* remote password to use */
@ -137,9 +141,11 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
struct idlist *mailboxes; /* list of mailboxes to check */
/* per-forwarding-target data */
--- a/fetchmail.man
+++ b/fetchmail.man
@@ -949,6 +949,37 @@ The default is your login name on the cl
Index: fetchmail-6.5.1/fetchmail.man
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.man
+++ fetchmail-6.5.1/fetchmail.man
@@ -1056,6 +1056,37 @@ The default is your login name on the cl
\fBfetchmail\fP.
See USER AUTHENTICATION below for a complete description.
.TP
@ -177,7 +183,7 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
.B \-I <specification> | \-\-interface <specification>
(Keyword: interface)
.br
@@ -1040,7 +1071,8 @@ setting also allows the non-standard "xo
@@ -1148,7 +1179,8 @@ setting also allows the non-standard "xo
the same token) if the server only claims to support "xoauth2".
External tools are necessary to obtain
such tokens. Access tokens often expire fairly quickly (e.g. 1 hour),
@ -187,7 +193,7 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
oauth2.py script from
.URL https://github.com/google/gmail-oauth2-tools/wiki/OAuth2DotPyRunThrough "Google's Oauth2 Run Through" ,
and other oauth2 documentation. For services like gmail, an "App Password"
@@ -1953,6 +1985,12 @@ T}
@@ -2100,6 +2132,12 @@ T}
pass[word] \& \& T{
Specify remote account password
T}
@ -200,9 +206,11 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
ssl \& \& T{
Connect to server over the specified base protocol using SSL encryption
T}
--- a/options.c
+++ b/options.c
@@ -31,6 +31,8 @@ enum {
Index: fetchmail-6.5.1/options.c
===================================================================
--- fetchmail-6.5.1.orig/options.c
+++ fetchmail-6.5.1/options.c
@@ -29,6 +29,8 @@ enum {
LA_POSTMASTER,
LA_NOBOUNCE,
LA_AUTH,
@ -211,7 +219,7 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
LA_FETCHDOMAINS,
LA_BSMTP,
LA_LMTP,
@@ -94,6 +96,8 @@ static const struct option longoptions[]
@@ -98,6 +100,8 @@ static const struct option longoptions[]
{"port", required_argument, (int *) 0, 'P' },
{"service", required_argument, (int *) 0, 'P' },
{"auth", required_argument, (int *) 0, LA_AUTH},
@ -220,7 +228,7 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
{"timeout", required_argument, (int *) 0, 't' },
{"envelope", required_argument, (int *) 0, 'E' },
{"qvirtual", required_argument, (int *) 0, 'Q' },
@@ -261,6 +265,7 @@ int parsecmdline (int argc /** argument
@@ -231,6 +235,7 @@ int parsecmdline (int argc /** argument
memset(ctl, '\0', sizeof(struct query)); /* start clean */
ctl->smtp_socket = -1;
@ -228,7 +236,7 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
while (!errflag &&
(c = getopt_long(argc,argv,shortoptions,
@@ -428,6 +433,17 @@ int parsecmdline (int argc /** argument
@@ -402,6 +407,17 @@ int parsecmdline (int argc /** argument
errflag++;
}
break;
@ -246,9 +254,11 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
case 't':
ctl->server.timeout = xatoi(optarg, &errflag);
if (ctl->server.timeout == 0)
--- a/rcfile_l.l
+++ b/rcfile_l.l
@@ -118,6 +118,8 @@ accept { return ACCEPT; }
Index: fetchmail-6.5.1/rcfile_l.l
===================================================================
--- fetchmail-6.5.1.orig/rcfile_l.l
+++ fetchmail-6.5.1/rcfile_l.l
@@ -116,6 +116,8 @@ accept { return ACCEPT; }
reject { return REJECT_; }
user(name)? {SETSTATE(NAME); return USERNAME; }
@ -257,17 +267,19 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
<INITIAL,NAME>pass(word)? {SETSTATE(NAME); return PASSWORD; }
folder(s)? { return FOLDER; }
smtp(host)? { return SMTPHOST; }
--- a/rcfile_y.y
+++ b/rcfile_y.y
@@ -63,6 +63,7 @@ extern char * yytext;
Index: fetchmail-6.5.1/rcfile_y.y
===================================================================
--- fetchmail-6.5.1.orig/rcfile_y.y
+++ fetchmail-6.5.1/rcfile_y.y
@@ -62,6 +62,7 @@ void yyerror (const char *s)
%token DEFAULTS POLL SKIP VIA AKA LOCALDOMAINS PROTOCOL
%token AUTHENTICATE TIMEOUT KPOP SDPS ENVELOPE QVIRTUAL
%token AUTHENTICATE TIMEOUT IDLETIMEOUT KPOP SDPS ENVELOPE QVIRTUAL
%token USERNAME PASSWORD FOLDER SMTPHOST FETCHDOMAINS MDA BSMTP LMTP
+%token PASSWORDFILE PASSWORDFD
%token SMTPADDRESS SMTPNAME SPAMRESPONSE PRECONNECT POSTCONNECT LIMIT WARNINGS
%token INTERFACE MONITOR PLUGIN PLUGOUT
%token IS HERE THERE TO MAP
@@ -307,6 +308,8 @@ user_option : TO mapping_list HERE
@@ -314,6 +315,8 @@ user_option : TO mapping_list HERE
| IS STRING THERE {current.remotename = $2;}
| PASSWORD STRING {current.password = $2;}
@ -276,15 +288,15 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
| FOLDER folder_list
| SMTPHOST smtp_list
| FETCHDOMAINS fetch_list
@@ -505,6 +508,7 @@ static void reset_server(const char *nam
@@ -495,6 +498,7 @@ static void reset_server(const char *nam
trailer = FALSE;
memset(&current,'\0',sizeof(current));
current.smtp_socket = -1;
+ current.passwordfd = -1;
current.server.pollname = xstrdup(name);
current.server.skip = skip;
current.server.principal = (char *)NULL;
@@ -526,6 +530,7 @@ static void user_reset(void)
}
@@ -515,6 +519,7 @@ static void user_reset(void)
memset(&current, '\0', sizeof(current));
current.smtp_socket = -1;
@ -292,7 +304,7 @@ Git-commit: cdd7182f65734c97723ba5f282040e08d830e650
current.server = save;
}
@@ -546,6 +551,7 @@ struct query *hostalloc(struct query *in
@@ -535,6 +540,7 @@ struct query *hostalloc(struct query *in
{
memset(node, '\0', sizeof(struct query));
node->smtp_socket = -1;

View File

@ -9,8 +9,10 @@ Git-commit: cc6e146d516140df800da68976eb7c0aa1cef7c0
fetchmail.h | 1 +
2 files changed, 8 insertions(+)
--- a/base64.c
+++ b/base64.c
Index: fetchmail-6.5.1/base64.c
===================================================================
--- fetchmail-6.5.1.orig/base64.c
+++ fetchmail-6.5.1/base64.c
@@ -66,6 +66,13 @@ fail:
return rc;
}
@ -25,9 +27,11 @@ Git-commit: cc6e146d516140df800da68976eb7c0aa1cef7c0
int from64tobits(void *out_, const char *in, int maxlen)
/* base 64 to raw bytes in quasi-big-endian order, returning count of bytes */
/* maxlen limits output buffer size, set to zero to ignore */
--- a/fetchmail.h
+++ b/fetchmail.h
@@ -642,6 +642,7 @@ int prc_filecheck(const char *, const fl
Index: fetchmail-6.5.1/fetchmail.h
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.h
+++ fetchmail-6.5.1/fetchmail.h
@@ -611,6 +611,7 @@ int prc_filecheck(const char *, const fl
/* base64.c */
unsigned len64frombits(unsigned inlen); /** calculate length needed to encode inlen octets. warnings: 1. caller needs to add 1 for a trailing \0 byte himself. 2. returns 0 for inlen 0! */
int to64frombits(char *, const void *, int inlen, size_t outlen);

View File

@ -8,9 +8,11 @@ Git-commit: 919fd787540c4a3fa4694566edce406df1e42001
fetchmail.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/fetchmail.h
+++ b/fetchmail.h
@@ -116,7 +116,7 @@ struct addrinfo;
Index: fetchmail-6.5.1/fetchmail.h
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.h
+++ fetchmail-6.5.1/fetchmail.h
@@ -101,7 +101,7 @@ struct addrinfo;
#define NAMELEN 64 /* max username length */
/* oauth2 access tokens seem to be about 130 characters; make this longer: */

View File

@ -13,9 +13,11 @@ I haven't tested pwmd, but these seem like obvious fixes.
fetchmail.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
--- a/fetchmail.c
+++ b/fetchmail.c
@@ -450,7 +450,7 @@ int main(int argc, char **argv)
Index: fetchmail-6.5.1/fetchmail.c
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.c
+++ fetchmail-6.5.1/fetchmail.c
@@ -470,7 +470,7 @@ int main(int argc, char **argv)
if (NO_PASSWORD(ctl))
/* Server won't care what the password is, but there
must be some non-null string here. */
@ -23,8 +25,8 @@ I haven't tested pwmd, but these seem like obvious fixes.
+ ctl->password = xstrdup(ctl->remotename);
else if (!ctl->passwordfile && ctl->passwordfd==-1)
{
netrc_entry *p;
@@ -1107,7 +1107,15 @@ static void optmerge(struct query *h2, s
const netrc_entry *p;
@@ -1118,7 +1118,15 @@ static void optmerge(struct query *h2, s
FLAG_MERGE(wildcard);
STRING_MERGE(remotename);

View File

@ -17,9 +17,11 @@ not be sufficient.
fetchmail.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/fetchmail.h
+++ b/fetchmail.h
@@ -116,7 +116,7 @@ struct addrinfo;
Index: fetchmail-6.5.1/fetchmail.h
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.h
+++ fetchmail-6.5.1/fetchmail.h
@@ -101,7 +101,7 @@ struct addrinfo;
#define NAMELEN 64 /* max username length */
/* oauth2 access tokens seem to be about 130 characters; make this longer: */

View File

@ -9,9 +9,11 @@ Git-commit: c2b96715bb39b9cfd1c751eae6b0111bed9c8581
fetchmail.man | 9 +----
2 files changed, 69 insertions(+), 40 deletions(-)
--- a/fetchmail.c
+++ b/fetchmail.c
@@ -650,48 +650,19 @@ int main(int argc, char **argv)
Index: fetchmail-6.5.1/fetchmail.c
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.c
+++ fetchmail-6.5.1/fetchmail.c
@@ -681,48 +681,19 @@ int main(int argc, char **argv)
}
ctl->password = xstrdup(msg);
@ -65,7 +67,7 @@ Git-commit: c2b96715bb39b9cfd1c751eae6b0111bed9c8581
} else if (!isatty(0)) {
fprintf(stderr,
GT_("fetchmail: can't find a password for %s@%s.\n"),
@@ -707,6 +678,8 @@ int main(int argc, char **argv)
@@ -739,6 +710,8 @@ int main(int argc, char **argv)
ctl->password = xstrdup((char *)fm_getpassword(tmpbuf));
free(tmpbuf);
}
@ -74,7 +76,7 @@ Git-commit: c2b96715bb39b9cfd1c751eae6b0111bed9c8581
}
}
@@ -897,6 +870,65 @@ int main(int argc, char **argv)
@@ -938,6 +911,65 @@ int main(int argc, char **argv)
dofastuidl = 0; /* this is reset in the driver if required */
@ -140,9 +142,11 @@ Git-commit: c2b96715bb39b9cfd1c751eae6b0111bed9c8581
querystatus = query_host(ctl);
if (NUM_NONZERO(ctl->fastuidl))
--- a/fetchmail.man
+++ b/fetchmail.man
@@ -954,12 +954,9 @@ See USER AUTHENTICATION below for a comp
Index: fetchmail-6.5.1/fetchmail.man
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.man
+++ fetchmail-6.5.1/fetchmail.man
@@ -1061,12 +1061,9 @@ See USER AUTHENTICATION below for a comp
.br
Specifies a file name from which to read the first line to use as the password.
Useful if something changes the password/token often without regenerating a
@ -157,7 +161,7 @@ Git-commit: c2b96715bb39b9cfd1c751eae6b0111bed9c8581
.TP
.B \-\-passwordfd <integer>
(Keyword: passwordfd)
@@ -972,7 +969,7 @@ although it could also be a redirected i
@@ -1079,7 +1076,7 @@ although it could also be a redirected i
(equivalent to "fetchmail \-\-passwordfd 5 5</path/to/file").
Useful if something wants to manage password ownership more securely
than files, or if the password/token changes often,

View File

@ -16,9 +16,11 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
create mode 100644 oauth2.c
create mode 100644 oauth2.h
--- a/Makefile.am
+++ b/Makefile.am
@@ -74,7 +74,7 @@ fetchmail_SOURCES= fetchmail.h getopt.h
Index: fetchmail-6.5.1/Makefile.am
===================================================================
--- fetchmail-6.5.1.orig/Makefile.am
+++ fetchmail-6.5.1/Makefile.am
@@ -63,7 +63,7 @@ fetchmail_SOURCES= fetchmail.h getopt.h
fetchmail.c env.c idle.c options.c daemon.c \
driver.c transact.c sink.c smtp.c \
idlist.c uid.c mxget.c md5ify.c cram.c gssapi.c \
@ -27,38 +29,42 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
unmime.c conf.c checkalias.c uid_db.h uid_db.c\
lock.h lock.c \
rcfile_l.l rcfile_y.y \
--- a/fetchmail.man
+++ b/fetchmail.man
@@ -1006,7 +1006,7 @@ AUTHENTICATION below for details). The
\&\fBpassword\fP, \fBkerberos_v5\fP, \fBkerberos\fP (or, for
Index: fetchmail-6.5.1/fetchmail.man
===================================================================
--- fetchmail-6.5.1.orig/fetchmail.man
+++ fetchmail-6.5.1/fetchmail.man
@@ -1114,7 +1114,7 @@ AUTHENTICATION below for details). The
excruciating exactness, \fBkerberos_v4\fP), \fBgssapi\fP,
\fBcram\-md5\fP, \fBotp\fP, \fBntlm\fP, \fBmsn\fP (only for POP3),
-\fBexternal\fP (only IMAP), \fBssh\fP and \fBoauthbearer\fP (only IMAP).
+\fBexternal\fP (only IMAP), \fBssh\fP and \fBoauthbearer\fP (requires token).
\fBexternal\fP (only IMAP), \fBimplicit\fP (\fBssh\fP is understood
-as alias for \fBimplicit\fP) and \fBoauthbearer\fP (only IMAP).
+as alias for \fBimplicit\fP) and \fBoauthbearer\fP (requires token).
When \fBany\fP (the default) is specified, fetchmail tries
first methods that do not require a password (EXTERNAL, GSSAPI, KERBEROS\ IV,
KERBEROS\ 5); then it looks for methods that mask your password
@@ -2342,8 +2342,7 @@ Legal protocol identifiers for use with
@@ -2492,8 +2492,7 @@ Legal protocol identifiers for use with
Legal authentication types are 'any', 'password', 'kerberos',
\&'kerberos_v4', 'kerberos_v5' and 'gssapi', 'cram\-md5', 'otp', 'msn'
(only for POP3), 'ntlm', 'ssh', 'external' (only IMAP),
(only for POP3), 'ntlm', 'implicit', 'external' (only IMAP),
-'oauthbearer' (only for IMAP; requires authentication token in
-place of password).
+'oauthbearer' (requires authentication token in place of password).
The 'password' type specifies
authentication by normal transmission of a password (the password may be
plain text or subject to protocol-specific encryption as in CRAM-MD5);
--- a/imap.c
+++ b/imap.c
@@ -17,6 +17,7 @@
Index: fetchmail-6.5.1/imap.c
===================================================================
--- fetchmail-6.5.1.orig/imap.c
+++ fetchmail-6.5.1/imap.c
@@ -15,6 +15,7 @@
#include <stdlib.h>
#include <limits.h>
#include <errno.h>
#endif
+#include "oauth2.h"
+#include "oauth2.h"
#include "socket.h"
#include "i18n.h"
@@ -419,63 +420,23 @@ static int do_imap_ntlm(int sock, struct
@@ -417,63 +418,23 @@ static int do_imap_ntlm(int sock, struct
static int do_imap_oauthbearer(int sock, struct query *ctl,flag xoauth2)
{
@ -128,8 +134,10 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
return ok;
}
Index: fetchmail-6.5.1/oauth2.c
===================================================================
--- /dev/null
+++ b/oauth2.c
+++ fetchmail-6.5.1/oauth2.c
@@ -0,0 +1,61 @@
+/*
+ * oauth2.c -- oauthbearer and xoauth2 support
@ -192,8 +200,10 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
+
+ return oauth2b64;
+}
Index: fetchmail-6.5.1/oauth2.h
===================================================================
--- /dev/null
+++ b/oauth2.h
+++ fetchmail-6.5.1/oauth2.h
@@ -0,0 +1,6 @@
+#ifndef OAUTH2_H
+#define OAUTH2_H
@ -201,17 +211,19 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
+char *get_oauth2_string(struct query *ctl,flag xoauth2);
+
+#endif /*OAUTH2_H*/
--- a/pop3.c
+++ b/pop3.c
@@ -20,6 +20,7 @@
Index: fetchmail-6.5.1/pop3.c
===================================================================
--- fetchmail-6.5.1.orig/pop3.c
+++ fetchmail-6.5.1/pop3.c
@@ -17,6 +17,7 @@
#include <stdlib.h>
#include <errno.h>
#include "fetchmail.h"
+#include "oauth2.h"
#include "socket.h"
#include "i18n.h"
#include "uid_db.h"
@@ -52,6 +53,10 @@ static flag has_cram = FALSE;
@@ -49,6 +50,10 @@ static flag has_cram = FALSE;
static flag has_otp = FALSE;
static flag has_ntlm = FALSE;
static flag has_stls = FALSE;
@ -222,7 +234,7 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
static void clear_sessiondata(void) {
/* must match defaults above */
@@ -135,12 +140,65 @@ static int pop3_ok (int sock, char *argb
@@ -132,12 +137,65 @@ static int pop3_ok (int sock, char *argb
char buf [POPBUFSIZE+1];
char *bufp;
@ -292,7 +304,7 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
while (isalpha((unsigned char)*bufp))
bufp++;
@@ -209,6 +267,8 @@ static int pop3_ok (int sock, char *argb
@@ -206,6 +264,8 @@ static int pop3_ok (int sock, char *argb
#endif
if (argbuf != NULL)
strcpy(argbuf,bufp);
@ -301,7 +313,7 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
}
return(ok);
@@ -237,11 +297,13 @@ static int capa_probe(int sock)
@@ -234,11 +294,13 @@ static int capa_probe(int sock)
#ifdef NTLM_ENABLE
has_ntlm = FALSE;
#endif /* NTLM_ENABLE */
@ -316,7 +328,7 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
char *cp;
/* determine what authentication methods we have available */
@@ -256,6 +318,10 @@ static int capa_probe(int sock)
@@ -253,6 +315,10 @@ static int capa_probe(int sock)
if (strstr(buffer, "STLS"))
has_stls = TRUE;
#endif /* SSL_ENABLE */
@ -327,7 +339,7 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
#if defined(GSSAPI)
if (strstr(buffer, "GSSAPI"))
@@ -279,6 +345,12 @@ static int capa_probe(int sock)
@@ -276,6 +342,12 @@ static int capa_probe(int sock)
if (strstr(buffer, "CRAM-MD5"))
has_cram = TRUE;
@ -340,7 +352,7 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
}
}
done_capa = TRUE;
@@ -295,6 +367,40 @@ static void set_peek_capable(struct quer
@@ -292,6 +364,40 @@ static void set_peek_capable(struct quer
peek_capable = !ctl->fetchall && (!ctl->keep || ctl->server.uidl);
}
@ -381,7 +393,7 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
static int pop3_getauth(int sock, struct query *ctl, char *greeting)
/* apply for connection authorization */
{
@@ -374,6 +480,7 @@ static int pop3_getauth(int sock, struct
@@ -371,6 +477,7 @@ static int pop3_getauth(int sock, struct
(ctl->server.authenticate == A_KERBEROS_V5) ||
(ctl->server.authenticate == A_OTP) ||
(ctl->server.authenticate == A_CRAM_MD5) ||
@ -389,7 +401,7 @@ Git-commit: 7b5c56f0fa3acb4c5589a4747c1921a311d8a464
maybe_starttls(ctl))
{
if ((ok = capa_probe(sock)) != PS_SUCCESS)
@@ -523,6 +630,19 @@ static int pop3_getauth(int sock, struct
@@ -520,6 +627,19 @@ static int pop3_getauth(int sock, struct
/*
* OK, we have an authentication type now.
*/

View File

@ -1,3 +1,32 @@
-------------------------------------------------------------------
Tue Nov 26 09:22:07 UTC 2024 - Angel Yankov <angel.yankov@suse.com>
- Upgrade to 6.5.1
* Drop two wolfSSL compile-time checks that were for older 6.4 or for future
7.0 releases and broke compilation with wolfSSL 5.7.4.
Fixes https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282413#c4
* Use %p instead of non-portable %#p for one wolfSSL-related diagnostic message
(FreeBSD defines %#p to be %p, on many other platforms it's undefined
behavior).
* Add regex_helper.c to list of files that contain translatable strings,
which contains two strings we missed to translate.
* Simplify EVP_MD_fetch API detection ("like OpenSSL 3" vs. "like OpenSSL 1")
for version switch and base it on the claimed OpenSSL version of the crypto
SSL, which works for LibreSSL (claims OpenSSL 2) and wolfSSL alike.
* Several translations added
- Rebased fetchmail-6.3.8-smtp_errors.patch
- Rebased fetchmail-FAQ-list-gmail-options-including-oauthbearer-and-app.patch
- Rebased fetchmail-add-contrib-fetchnmail-oauth2.py-token-acquisition-u.patch
- Rebased fetchmail-add-imap-oauthbearer-support.patch
- Rebased fetchmail-add-passwordfile-and-passwordfd-options.patch
- Rebased fetchmail-add-query_to64_outsize-utility-function.patch
- Rebased fetchmail-bump-max-passwordlen-to-1bytes.patch
- Rebased fetchmail-give-each-ctl-it-s-own-copy-of-password.patch
- Rebased fetchmail-increase-max-password-length-to-handle-oauth-tokens.patch
- Rebased fetchmail-re-read-passwordfile-on-every-poll.patch
- Rebased fetchmail-support-oauthbearer-xoauth2-with-pop3.patch
- Rebased fetchmailconf-no-more-future.patch
-------------------------------------------------------------------
Thu Apr 4 09:01:54 UTC 2024 - Dirk Müller <dmueller@suse.com>

View File

@ -21,13 +21,13 @@
%define _fillupdir %{_localstatedir}/adm/fillup-templates
%endif
Name: fetchmail
Version: 6.4.38
Version: 6.5.1
Release: 0
Summary: Full-Featured POP and IMAP Mail Retrieval Daemon
License: GPL-2.0-or-later
URL: https://www.fetchmail.info/
Source0: https://sourceforge.net/projects/%{name}/files/branch_6.4/%{name}-%{version}.tar.xz
Source1: https://sourceforge.net/projects/%{name}/files/branch_6.4/%{name}-%{version}.tar.xz.asc
Source0: https://sourceforge.net/projects/%{name}/files/branch_6.5/%{name}-%{version}.tar.xz
Source1: https://sourceforge.net/projects/%{name}/files/branch_6.5/%{name}-%{version}.tar.xz.asc
Source2: %{name}.logrotate
Source3: sysconfig.%{name}
Source5: %{name}.keyring

View File

@ -1,45 +1,13 @@
Index: fetchmail-6.4.37/fetchmailconf.py
Index: fetchmail-6.5.1/fetchmailconf.py
===================================================================
--- fetchmail-6.4.37.orig/fetchmailconf.py
+++ fetchmail-6.4.37/fetchmailconf.py
@@ -3,21 +3,12 @@
--- fetchmail-6.5.1.orig/fetchmailconf.py
+++ fetchmail-6.5.1/fetchmailconf.py
@@ -3,7 +3,7 @@
# A GUI configurator for generating fetchmail configuration files.
# by Eric S. Raymond, <esr@snark.thyrsus.com>,
# Matthias Andree <matthias.andree@gmx.de>
-# Requires Python with Tkinter, and the following OS-dependent services:
+# Requires Python 3.4+ with Tkinter, and the following OS-dependent services:
+# Requires Python 3.7+ with Tkinter, and the following OS-dependent services:
# posix, posixpath, socket
# WARNING: this needs to be updated for fetchmail 6.4's SSL options,
# and other recent new options;
-from __future__ import print_function
-from __future__ import division
-from past.builtins import execfile
-from future import standard_library
-standard_library.install_aliases()
-from builtins import str
-from builtins import range
-from past.utils import old_div
-from builtins import object
import sys
import time
import os
@@ -37,7 +28,7 @@ except:
VERSION = "1.63.5"
-MIN_PY = (2, 7, 13)
+MIN_PY = (3, 4, 0)
if sys.version_info < MIN_PY:
sys.exit("fetchmailconf: Python %s.%s.%s or later is required.\n" % MIN_PY)
@@ -535,7 +526,7 @@ class LabeledEntry(Frame):
def ButtonBar(frame, legend, ref, alternatives, depth, command):
# array of radio buttons, caption to left, picking from a string list
bbar = Frame(frame)
- width = old_div((len(alternatives)+1), depth)
+ width = len(alternatives)+1 // depth
Label(bbar, text=legend).pack(side=LEFT)
for column in range(width):
subframe = Frame(bbar)