<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/15677d0119e619a3e9020bfff1fdc09e06a436f5">https://github.com/macports/macports-ports/commit/15677d0119e619a3e9020bfff1fdc09e06a436f5</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 15677d0119e getmail6: New port.
</span>15677d0119e is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 15677d0119e619a3e9020bfff1fdc09e06a436f5
</span>Author: Tomas Volf <~@wolfsden.cz>
AuthorDate: Thu Aug 8 10:53:08 2024 +0200
<span style='display:block; white-space:pre;color:#404040;'> getmail6: New port.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Since getmail6 is a fork of getmail, not just a new version, introduce it as a
</span><span style='display:block; white-space:pre;color:#404040;'> new port. It conflicts with getmail, there is little reason to have both
</span><span style='display:block; white-space:pre;color:#404040;'> installed at the same time and this way I do not have to deal with selections.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * mail/getmail6/Portfile: New file.
</span><span style='display:block; white-space:pre;color:#404040;'> * mail/getmail/Portfile: Add conflicts with getmail6.
</span><span style='display:block; white-space:pre;color:#404040;'> * mail/getmail6/files/0001-pop3-Support-use_xoauth2.patch: New file.
</span>---
mail/getmail/Portfile | 2 +
mail/getmail6/Portfile | 48 +++++
.../files/0001-pop3-Support-use_xoauth2.patch | 211 +++++++++++++++++++++
3 files changed, 261 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/mail/getmail/Portfile b/mail/getmail/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 0461f5f8ee5..e39801a342b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/mail/getmail/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/mail/getmail/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,6 +19,8 @@ long_description getmail version 5 is a flexible, extensible mail retrieval \
</span> # getmail does not contain binary code
supported_archs noarch
<span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts getmail6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> homepage https://pyropus.ca./software/getmail/
master_sites ${homepage}old-versions/ \
https://fossies.org/linux/misc/
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/mail/getmail6/Portfile b/mail/getmail6/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..cd53819c5d1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/mail/getmail6/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,48 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup getmail6 getmail6 6.19.03 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories mail python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms {darwin any}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {@graywolf wolfsden.cz:~+macports} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license GPL-2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description extensible mail retrieval system with POP3, IMAP4, SSL support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description getmail6 is a flexible, extensible mail retrieval \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system with support for POP3, IMAP4, SSL variants of both, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ maildirs, mboxrd files, external MDAs, arbitrary message \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filtering, single-user and domain-mailboxes, and many \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ other useful features.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs noarch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts getmail
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://getmail6.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 d6b0f4a5b5506529c3f2227fd2950c1ca113e079 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 b47938a23e00fe953696757dc0eacd5f6e87561aa9ca0994ad54f182a9ba29e4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 215134
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/getmail6/getmail6/pull/205
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles 0001-pop3-Support-use_xoauth2.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.default_version 312
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach mf { getmail getmail_fetch getmail_maildir getmail_mbox getmails } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${worksrcpath}/docs/${mf}.1 ${destroot}${prefix}/share/man/man1/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file mkdir ${destroot}${prefix}/share/doc/getmail/examples
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${worksrcpath}/docs/getmailrc-examples \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/share/doc/getmail/examples/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -W ${worksrcpath}/docs configuration.txt documentation.txt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/share/doc/getmail/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/mail/getmail6/files/0001-pop3-Support-use_xoauth2.patch b/mail/getmail6/files/0001-pop3-Support-use_xoauth2.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..16ad0a2e8de
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/mail/getmail6/files/0001-pop3-Support-use_xoauth2.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,211 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 7b9a6a3a991cf962143b3c9a4c665b6639d08e3c Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 7 Aug 2024 22:28:55 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] pop3: Support use_xoauth2.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Adds support for use_xoauth2 configuration and OAuth2 support to POP3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+retrievers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* getmailcore/_retrieverbases.py (POP3RetrieverBase.initialize): Handle
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_xoauth2.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* getmailcore/retrievers.py (SimplePOP3Retriever, SimplePOP3SSLRetriever),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(BrokenUIDLPOP3Retriever, BrokenUIDLPOP3SSLRetriever),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(MultidropPOP3Retriever, MultidropPOP3SSLRetriever),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(MultidropSDPSRetriever): New ConfBool `use_xoauth2'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* docs/configuration.html, docs/configuration.txt: Document it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ docs/configuration.html | 29 +++++++++++++++++++++++++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ docs/configuration.txt | 19 ++++++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ getmailcore/_retrieverbases.py | 8 +++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ getmailcore/retrievers.py | 8 +++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4 files changed, 59 insertions(+), 5 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docs/configuration.html b/docs/configuration.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index afabedb..c4a6969 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docs/configuration.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docs/configuration.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -586,6 +586,31 @@ password_command = ("/path/to/password-retriever", "-p", &qu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </pre>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </li>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </ul>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++<p>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ All POP3 retriever types also take the following optional parameters:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++</p>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++<ul>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <li>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ use_xoauth2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (<a href="#parameter-boolean">boolean</a>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ — whether to use XOAUTH2 for login with the POP3 server.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ If not set, normal password-based authentication is used. This currently
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ supports Gmail and Microsoft Office 365; if anyone extends this to support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ other POP3 providers, please let me know so I can include such support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ in getmail. <strong>Note that using XOAUTH2 is no more secure than a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ regular getmail configuration with a mode 0600 getmailrc file</strong>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ You will need to set <a href="#password_command">password_command</a>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ as well to tell getmail to invoke the getmail-gmail-xoauth-tokens
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ helper program; that script requires a positional argument to tell it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ json file where to read the initial tokens from and where it writes the access
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ and refresh tokens to, and the file requires manual initial setup.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Keep write access to the json file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ This functionality was contributed by Stefan Krah,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ who has additional information about using it here:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <a href="http://www.bytereef.org/howto/oauth2/getmail.html">http://www.bytereef.org/howto/oauth2/getmail.html</a>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ See docs/getmailrc-examples.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ </li>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++</ul>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <p>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ All IMAP retriever types also take the following optional parameters:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </p>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -685,7 +710,7 @@ mailboxes = ALL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <a href="https://docs.python.org/3/library/imaplib.html#imaplib.IMAP4.search">IMAP search</a>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Set <pre class="example">imap_search = UNSEEN</pre> to skip read messages.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ The value is case-insensitive. It may be in parentheses.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- As an example <pre class="example">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ As an example <pre class="example">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ imap_search = Unseen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ imap_on_delete = \Seen</pre>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fetches only new messages and sets the message flag to <span class="file">SEEN</span> on "delete"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2547,7 +2572,7 @@ localpart_translate = ('mailhostaccount-', '')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Has no effect unless <a href="#use_netrc">use_netrc</a> is True.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Default: unset, which means <a href="#use_netrc">use_netrc</a> will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ read the default netrc file for your system,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- typically <span class="file">~/.netrc</span>, unless
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ typically <span class="file">~/.netrc</span>, unless
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <span class="file">NETRC</span> or <span class="file">CURLOPT_NETRC_FILE</span>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ is defined.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </li>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docs/configuration.txt b/docs/configuration.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 798b89e..5ea2d38 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docs/configuration.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docs/configuration.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -367,6 +367,24 @@ Creating a getmail rc file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ password_command = ("/path/to/password-retriever", "-p", "myaccount@example.org")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ All POP3 retriever types also take the following optional parameters:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * use_xoauth2 (boolean) — whether to use XOAUTH2 for login with the POP3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ server. If not set, normal password-based authentication is used. This
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ currently supports Gmail and Microsoft Office 365; if anyone extends
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ this to support other POP3 providers, please let me know so I can
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ include such support in getmail. Note that using XOAUTH2 is no more
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ secure than a regular getmail configuration with a mode 0600 getmailrc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ file. You will need to set password_command as well to tell getmail to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ invoke the getmail-gmail-xoauth-tokens helper program; that script
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ requires a positional argument to tell it json file where to read the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ initial tokens from and where it writes the access and refresh tokens
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ to, and the file requires manual initial setup. Keep write access to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ the json file. This functionality was contributed by Stefan Krah, who
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ has additional information about using it here:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ http://www.bytereef.org/howto/oauth2/getmail.html. See
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ docs/getmailrc-examples.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ All IMAP retriever types also take the following optional parameters:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * mailboxes (tuple of quoted strings) — a list of mailbox paths to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -440,7 +458,6 @@ Creating a getmail rc file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ to skip read messages. The value is case-insensitive. It may be in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ parentheses. As an example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ imap_search = Unseen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ imap_on_delete = \Seen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/getmailcore/_retrieverbases.py b/getmailcore/_retrieverbases.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index cbb0bfd..97630f4 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/getmailcore/_retrieverbases.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/getmailcore/_retrieverbases.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -41,6 +41,7 @@ import poplib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import imaplib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import re
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import select
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++import base64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # do we have a recent pykerberos?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1219,6 +1220,12 @@ class POP3RetrieverBase(RetrieverSkeleton):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if self.conf['use_apop']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.conn.apop(self.conf['username'],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.conf['password'])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ elif self.conf['use_xoauth2']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ # octal 1 / ctrl-A used as separator
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ auth = 'user=%s\1auth=Bearer %s\1\1' % (self.conf['username'],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ self.conf['password'])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ auth = base64.b64encode(auth.encode()).decode()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ self.conn._shortcmd('AUTH XOAUTH2 %s' % auth)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.conn.user(self.conf['username'])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.conn.pass_(self.conf['password'])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2027,4 +2034,3 @@ class MultidropIMAPRetrieverBase(IMAPRetrieverBase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ msg.recipient = address_no_brackets(line.strip())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return msg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/getmailcore/retrievers.py b/getmailcore/retrievers.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2d1077b..1ded232 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/getmailcore/retrievers.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/getmailcore/retrievers.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -66,6 +66,7 @@ class SimplePOP3Retriever(POP3RetrieverBase, POP3initMixIn):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='username'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfPassword(name='password', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfTupleOfStrings(name='password_command', required=False, default=()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ConfBool(name='use_xoauth2', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='use_apop', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='delete_dup_msgids', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -100,6 +101,7 @@ class SimplePOP3SSLRetriever(POP3RetrieverBase, POP3SSLinitMixIn):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='username'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfPassword(name='password', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfTupleOfStrings(name='password_command', required=False, default=()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ConfBool(name='use_xoauth2', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='use_apop', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='delete_dup_msgids', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfFile(name='keyfile', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -178,6 +180,7 @@ class BrokenUIDLPOP3Retriever(BrokenUIDLPOP3RetrieverBase, POP3initMixIn):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='username'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfPassword(name='password', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfTupleOfStrings(name='password_command', required=False, default=()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ConfBool(name='use_xoauth2', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='use_apop', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ received_with = 'POP3'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -209,6 +212,7 @@ class BrokenUIDLPOP3SSLRetriever(BrokenUIDLPOP3RetrieverBase, POP3SSLinitMixIn):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='username'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfPassword(name='password', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfTupleOfStrings(name='password_command', required=False, default=()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ConfBool(name='use_xoauth2', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='use_apop', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfFile(name='keyfile', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfFile(name='certfile', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -247,6 +251,7 @@ class MultidropPOP3Retriever(MultidropPOP3RetrieverBase, POP3initMixIn):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='username'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfPassword(name='password', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfTupleOfStrings(name='password_command', required=False, default=()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ConfBool(name='use_xoauth2', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='use_apop', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='envelope_recipient'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -281,6 +286,7 @@ class MultidropPOP3SSLRetriever(MultidropPOP3RetrieverBase, POP3SSLinitMixIn):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='username'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfPassword(name='password', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfTupleOfStrings(name='password_command', required=False, default=()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ConfBool(name='use_xoauth2', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='use_apop', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='envelope_recipient'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfFile(name='keyfile', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -329,6 +335,7 @@ class MultidropSDPSRetriever(SimplePOP3Retriever, POP3initMixIn):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfString(name='username'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfPassword(name='password', required=False, default=None),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfTupleOfStrings(name='password_command', required=False, default=()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ConfBool(name='use_xoauth2', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Demon apparently doesn't support APOP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ConfBool(name='use_apop', required=False, default=False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -563,4 +570,3 @@ class MultidropIMAPSSLRetriever(MultidropIMAPRetrieverBase, IMAPSSLinitMixIn):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.log.trace()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.log.info('MultidropIMAPSSLRetriever(%s)' % self._confstring()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + os.linesep)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.46.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>
</pre>