<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 = (&quot;/path/to/password-retriever&quot;, &quot;-p&quot;, &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;'>++        &mdash; 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>