<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>POP3 on billpg industries™</title><link>https://owl.billpg.com/tags/pop3/</link><description>Recent content in POP3 on billpg industries™</description><generator>Hugo</generator><language>en-us</language><copyright>© William Godfrey.</copyright><lastBuildDate>Thu, 29 Apr 2021 17:09:39 +0000</lastBuildDate><atom:link href="https://owl.billpg.com/tags/pop3/index.xml" rel="self" type="application/rss+xml"/><item><title>POP3 - The ideas that didn't make it.</title><link>https://owl.billpg.com/pop3-didnt-make-it/</link><pubDate>Thu, 29 Apr 2021 17:09:39 +0000</pubDate><guid>https://owl.billpg.com/pop3-didnt-make-it/</guid><description>&lt;p&gt;This is part of series of posts documenting extensions to the POP3 protocol.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://owl.billpg.com/pop3-commit-refresh/" rel="noreferrer noopener" data-type="post" data-id="226" target="_blank"&gt;POP3 – A Commit and Refresh Mechanism&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://owl.billpg.com/pop3-message-ids/" rel="noreferrer noopener" data-type="post" data-id="261" target="_blank"&gt;POP3 – Goodbye to numeric message IDs!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://owl.billpg.com/pop3-deli/" rel="noreferrer noopener" data-type="post" data-id="335" target="_blank"&gt;POP3 – Delete Immediately&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/billpg/POP3Listener/" rel="noreferrer noopener" target="_blank"&gt;billpg.POP3Listener - A reference implementation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I had a few ideas along the way. This post collects some that didn&amp;rsquo;t quite make it. I present these so the time I spent won&amp;rsquo;t have been a &lt;em&gt;complete&lt;/em&gt; waste. 🐘&lt;/p&gt;</description></item><item><title>POP3 - Delete Immediately</title><link>https://owl.billpg.com/pop3-deli/</link><pubDate>Wed, 07 Apr 2021 18:03:51 +0000</pubDate><guid>https://owl.billpg.com/pop3-deli/</guid><description>&lt;p&gt;This post is part of series documenting extensions I&amp;rsquo;ve designed and prototyped for the POP3 protocol. I originally had this idea on the way to designing &lt;a href="https://owl.billpg.com/pop3-commit-refresh/" rel="noreferrer noopener" data-type="post" data-id="226" target="_blank"&gt;a mechanism for keeping connections open&lt;/a&gt; and avoid having to close and reopen them. I had abandoned this specific idea early on in that process but once I started writing up my notes for public discussion, I realised this small update might still be useful to implement.&lt;/p&gt;</description></item><item><title>Write Your Own POP3 Service</title><link>https://owl.billpg.com/pop3-write-your-own/</link><pubDate>Fri, 26 Mar 2021 18:31:19 +0000</pubDate><guid>https://owl.billpg.com/pop3-write-your-own/</guid><description>&lt;p&gt;So, you want to write a POP3 service? That&amp;rsquo;s great. In this post, we&amp;rsquo;ll walk through building a simple POP3 service that uses a folder full of EML files as a mailbox and serves them to anyone logging in.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m assuming you are already set-up to be writing and building C# code. If you have Windows, the free version of Visual Studio 2019 is great. (Or use a more recent version if one exists.) Visual Studio Code is great on Linux too.&lt;/p&gt;</description></item><item><title>POP3 - Goodbye to numeric message IDs!</title><link>https://owl.billpg.com/pop3-message-ids/</link><pubDate>Mon, 22 Mar 2021 19:57:42 +0000</pubDate><guid>https://owl.billpg.com/pop3-message-ids/</guid><description>&lt;p&gt;This is the second post in my series describing a number of extensions to the POP3 protocol. The main one is a mechanism to refresh an already opened connection to allow newly arrived messages to be downloaded, which I&amp;rsquo;ve described on &lt;a href="https://owl.billpg.com/pop3-commit-refresh/" data-type="post" data-id="226" target="_blank" rel="noreferrer noopener"&gt;a separate post&lt;/a&gt;. This one is a lot simpler in scope but if we&amp;rsquo;re doing work in this protocol anyway, this may as well come as a package.&lt;/p&gt;</description></item><item><title>POP3 - A Commit and Refresh Mechanism</title><link>https://owl.billpg.com/pop3-commit-refresh/</link><pubDate>Mon, 22 Mar 2021 19:08:48 +0000</pubDate><guid>https://owl.billpg.com/pop3-commit-refresh/</guid><description>&lt;p&gt;POP3 is a popular protocol for accessing a mailbox full of email messages. While small devices have moved their mail reading apps to IMAP and proprietary protocols, POP3 remains the preferred protocol for moving email messages between big servers where a no-frills, download-and-delete system is preferred.&lt;/p&gt;
&lt;p&gt;A problem with this protocol is embodied in this question: &lt;strong&gt;&amp;ldquo;How often should we poll for new messages?&amp;rdquo;&lt;/strong&gt; There&amp;rsquo;s a non-trivial overhead to connecting. Poll too quickly and you overload the system. Poll too far apart and messages take too long to arrive.&lt;/p&gt;</description></item><item><title>POP3 - UIDL is a required command!</title><link>https://owl.billpg.com/pop3-uidl/</link><pubDate>Thu, 17 Dec 2020 20:06:55 +0000</pubDate><guid>https://owl.billpg.com/pop3-uidl/</guid><description>&lt;p&gt;&lt;a href="https://tools.ietf.org/html/rfc1957" rel="noreferrer noopener" target="_blank"&gt;RFC 1957&lt;/a&gt; observes, discussing mail reading software that implements the popular POP3 protocol: &amp;ldquo;two popular clients require optional parts of the RFC. Netscape requires UIDL, and Eudora requires TOP.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;This reads like a complaint, but this tell me that Netscape&amp;rsquo;s mail reader (which these days is called Thunderbird) is well designed.&lt;/p&gt;
&lt;p&gt;The rot started with  &lt;a href="https://tools.ietf.org/html/rfc1939" rel="noreferrer noopener" target="_blank"&gt;RFC 1939&lt;/a&gt;, the standard for this protocol. This document specifies that &lt;strong&gt;UIDL&lt;/strong&gt; is &lt;em&gt;optional&lt;/em&gt;. This was a mistake. Without UIDL, the protocol is not reliable. I write this in the hope of persuading you that UIDL should not only be considered a requirement for a POP3 server, but that any client software that &lt;em&gt;doesn&amp;rsquo;t&lt;/em&gt; require UIDL should not be trusted. I&amp;rsquo;m looking at you, Eudora!&lt;/p&gt;</description></item></channel></rss>