blob: 18de97bfe5690f16d92c807503982104ab048c5a [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Post Office Protocol (POP) :: Apache James</title>
<meta name="generator" content="Antora 2.3.4">
<link rel="stylesheet" href="../../../../_/css/site.css">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://james.apache.org"><img src="/_/img/james.svg" alt="james logo"> Apache James</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<a class="navbar-item" href="#">Home</a>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Products</a>
<div class="navbar-dropdown">
<div class="navbar-item"><strong>James server</strong></div>
<a class="navbar-item" href="https://github.com/apache/james-project">Repository</a>
<a class="navbar-item" href="https://issues.apache.org/jira/projects/JAMES/issues">Issue Tracker</a>
<hr class="navbar-divider">
<a class="navbar-item" href="https://james.apache.org/mime4j/index.html">Mime4J</a>
<a class="navbar-item" href="https://james.apache.org/jsieve/index.html">jSieve</a>
<a class="navbar-item" href="https://james.apache.org/jspf/index.html">jSPF</a>
<a class="navbar-item" href="https://james.apache.org/jdkim/index.html">jDKIM</a>
<a class="navbar-item" href="https://james.apache.org/hupa/index.html">HUPA</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Community</a>
<div class="navbar-dropdown">
<!-- Not ideal but dropping the version in the href requires tweaking james-projet docs module first -->
<a class="navbar-item" href="/james-project/3.6.0/community/mailing-lists.html">Mailing lists</a>
<a class="navbar-item" href="https://gitter.im/apache/james-project"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" class="logo-gitter-sign" data-v-44ebcb1a=""><rect x="15" y="5" width="2" height="10"></rect> <rect x="10" y="5" width="2" height="20"></rect> <rect x="5" y="5" width="2" height="20"></rect> <rect width="2" height="15"></rect></svg> Gitter</a>
<a class="navbar-item" href="https://twitter.com/ApacheJames">
<span class="icon">
<svg aria-hidden="true" data-icon="twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="#57aaee" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path>
</svg>
</span> Twitter
</a>
<a class="navbar-item" href="#"> <svg class="octicon octicon-mark-github v-align-middle" viewBox="0 0 16 16" version="1.1" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> Github</a>
</div>
</div>
<!-- <div class="navbar-item">
<span class="control">
<a class="button is-primary" href="#">Download</a>
</span>
</div> -->
</div>
</div>
</nav>
</header>
<div class="body">
<div class="nav-container" data-component="james-project" data-version="3.8.0">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
<h3 class="title"><a href="../../index.html">Apache James Server</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../index.html">Concepts</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../user/index.html">User Model</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../mail/index.html">Emails</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../messages/index.html">Messages</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../messages/imf.html">IMF</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../messages/mime.html">MIME</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="index.html">Protocols</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="smtp.html">SMTP</a>
</li>
<li class="nav-item is-current-page" data-depth="3">
<a class="nav-link" href="pop.html">POP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="imap.html">IMAP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="jmap.html">JMAP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="esmtp.html">ESMTP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="lmtp.html">LMTP</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../storage/index.html">Storage</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../storage/mailbox.html">Mailboxes</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../storage/users.html">Users</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../processing/index.html">Processing</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../configuration.html">Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../glossary.html">Glossary</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../servers/index.html">Servers</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../servers/demo.html">Demo</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../servers/5-minute-demo.html">Short Demo</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../servers/15-minute-demo.html">Long Demo</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../servers/basic/index.html">Basic</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../servers/basic/context.html">Context</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../servers/basic/objectives.html">Objectives</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../servers/basic/concepts.html">Concepts</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../servers/basic/architecture.html">Architecture</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../servers/basic/conf/index.html">Configuration</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../servers/basic/help.html">Help</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../servers/extendable.html">Extendable</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../servers/test.html">Test</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../../customization/index.html">Customization</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../development/index.html">Developer Guide</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../development/logging.html">Logging in Apache James</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../community/index.html">Community</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/mailing-lists.html">Mailing lists</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/contributing.html">Contributing</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/guidelines.html">Guidelines</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/download.html">Download releases</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/website.html">Building and publishing the website</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/release.html">Creating an official Apache James release</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../community/support.html">Professional support</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Apache Software Foundation</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/">ASF</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/getinvolved.html">Get involved</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/licenses/">Licenses</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/security/">Security</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Apache James Server</span>
<span class="version">3.8.0 SNAPSHOT</span>
</div>
<ul class="components">
<li class="component is-current">
<div class="title"><a href="../../index.html">Apache James Server</a></div>
<ul class="versions">
<li class="version is-current is-latest">
<a href="../../index.html">3.8.0 SNAPSHOT</a>
</li>
</ul>
</li>
<li class="component">
<div class="title"><a href="../../../../james-site/latest/index.html">Apache James Site</a></div>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../james-site/latest/index.html">latest</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../../../james-site/latest/homepage.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../../index.html">Apache James Server</a></li>
<li><a href="../index.html">Concepts</a></li>
<li><a href="index.html">Protocols</a></li>
<li><a href="pop.html">POP</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/apache/james-project/blob/master/docs/modules/concepts/pages/protocols/pop.adoc">Edit this Page</a></div>
</div>
<div class="content">
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page">Post Office Protocol (POP)</h1>
<div class="sect1">
<h2 id="_overview"><a class="anchor" href="#_overview"></a>Overview</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <a href="https://en.wikipedia.org/wiki/Post_Office_Protocol">Post Office Protocol</a>,
or POP, is described in the original specification
as being "a simple method for workstations to dynamically access mail from
a <a href="../storage/index.html" class="page">mailbox server</a>" (though interestingly "mailbox server"
is never actually defined in this specification nor in later specifications. 🤔)</p>
</div>
<div class="paragraph">
<p>POP was proposed as the first non-<a href="smtp.html" class="page">SMTP</a> protocol aimed
at users for the purpose of retrieving emails stored remotely for local consumption.
POP was developed in pre-spam days, so was inherently a non-secure protocol.
It has been updated several times to address several issues, including lack of
security, so that POP3 is now the current specification.</p>
</div>
<div class="paragraph">
<p>As the name suggests, the protocol is modeled after a post office. The analogy being:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The various SMTP servers along the transmission chain are like post offices</p>
</li>
<li>
<p>The user&#8217;s mail server is the local post office that will dispatch the mail to the recipient</p>
</li>
<li>
<p>The postman is, ummm, well no analogy is perfect 😬</p>
</li>
<li>
<p>The mail gets dropped into the user&#8217;s mailbox (though just to make the analogy even
muddier there is an option to leave a copy on the server)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Analogies aside, the protocol worked quite well for most users, and is still widely
in use today.</p>
</div>
<div class="paragraph">
<p>POP requires essentially two pieces, the POP Client and the POP Server. How the
message gets initially delivered to the POP Server and how a message is managed
once delivered to the POP Client is out of scope of the POP protocol.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_specifications"><a class="anchor" href="#_specifications"></a>Specifications</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_pop"><a class="anchor" href="#_pop"></a>POP</h3>
<div class="paragraph">
<p>POP has been around since the early days of email. The original specification
<a href="#_rfc918">RFC918</a> was published in 1984.</p>
</div>
<div class="sect3">
<h4 id="_rfc918"><a class="anchor" href="#_rfc918"></a>RFC918</h4>
<div class="paragraph">
<p><a href="https://tools.ietf.org/html/rfc918">RFC918</a> ("Post Office Protocol") was the original
specification published in 1984. The RFC "suggests a simple method for workstations
to dynamically access mail from a mailbox server."
Like <a href="smtp.html" class="page">SMTP</a> that came before it, POP is a session-based
protocol with a handful of defined commands.
This RFC was obsoleted shortly after its publication by <a href="#_rfc937">RFC937</a>.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_pop2"><a class="anchor" href="#_pop2"></a>POP2</h3>
<div class="sect3">
<h4 id="_rfc937"><a class="anchor" href="#_rfc937"></a>RFC937</h4>
<div class="paragraph">
<p><a href="https://tools.ietf.org/html/rfc937">RFC937</a> ("Post Office Protocol - Version 2") or more
commonly "POP2" was a revision of the original <a href="#_rfc918">RFC918</a> specification. POP2 specifies
connection over port 109, and clarifies that "it is important for the mailbox to be on
an 'always up' machine and that a workstation may be frequently powered down, or
otherwise unavailable as an SMTP server." In other words, as the Internet continued to
evolve, this specification was an attempt to evolve with it.</p>
</div>
<div class="paragraph">
<p>POP2 was replaced by POP3, which was first published as <a href="#_rfc1081">RFC1081</a>.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_pop3"><a class="anchor" href="#_pop3"></a>POP3</h3>
<div class="sect3">
<h4 id="_rfc1081"><a class="anchor" href="#_rfc1081"></a>RFC1081</h4>
<div class="paragraph">
<p><a href="https://tools.ietf.org/html/rfc1081">RFC1081</a> ("Post Office Protocol - Version 3")
was the first published version of POP3,
made available in 1988. It adds additional functionality for managing mail, and
perhaps most importantly, it adds an authentication mechanism. This version was
obsoleted by <a href="#_rfc1225">RFC1225</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_rfc1225"><a class="anchor" href="#_rfc1225"></a>RFC1225</h4>
<div class="paragraph">
<p><a href="https://tools.ietf.org/html/rfc1225">RFC1225</a> ("Post Office Protocol - Version 3")
obsoleted <a href="#_rfc1081">RFC1081</a>. It is described as being a "republication" of <a href="#_rfc1081">RFC1081</a>,
and does not appear to add anything significant. It was obsoleted by
<a href="#_rfc1460">RFC1460</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_rfc1460"><a class="anchor" href="#_rfc1460"></a>RFC1460</h4>
<div class="paragraph">
<p><a href="https://tools.ietf.org/html/rfc1460">RFC1460</a> ("Post Office Protocol - Version 3")
provided some relatively minor updates to <a href="#_rfc1225">RFC1225</a>, and was itself obsoleted
about one year later by <a href="#_rfc1725">RFC1725</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_rfc1725"><a class="anchor" href="#_rfc1725"></a>RFC1725</h4>
<div class="paragraph">
<p><a href="https://tools.ietf.org/html/rfc1725">RFC1725</a> ("Post Office Protocol - Version 3")
was again a relatively minor update of <a href="#_rfc1460">RFC1460</a>, and was itself obsoleted
about two years later by <a href="#_rfc1939">RFC1939</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="_rfc1939"><a class="anchor" href="#_rfc1939"></a>RFC1939</h4>
<div class="paragraph">
<p><a href="https://tools.ietf.org/html/rfc1939">RFC1939</a> ("Post Office Protocol - Version 3")
is the most recent specification of POP3, and is the version in use today.</p>
</div>
<div class="paragraph">
<p>This specification seems to imply that POP3 is used for "simple" transactions,
and for more "advanced" transactions <a href="imap.html" class="page">IMAP</a> is available.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_pop4"><a class="anchor" href="#_pop4"></a>POP4</h3>
<div class="paragraph">
<p>Although there was development on the <a href="http://www.pop4.org/">POP4</a> specification,
development appears to have stalled for several years, making POP3 the
still-current protocol.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_related_concepts"><a class="anchor" href="#_related_concepts"></a>Related Concepts</h2>
<div class="sectionbody">
<div class="paragraph">
<p>POP relates to&#8230;&#8203;</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong><a href="imap.html" class="page">IMAP</a></strong> as a "competing" protocol</p>
</li>
<li>
<p><strong><a href="../glossary.html#email_client" class="page">Email clients</a></strong>, in that the client acts as a POP Client</p>
</li>
<li>
<p><strong><a href="../storage/index.html" class="page">Storage</a></strong> in that messages are stored temporarily on
a ???? while awaiting transfer to the client</p>
</li>
<li>
<p><strong><a href="smtp.html" class="page">SMTP</a></strong>, in that messages will normally be
delivered to the IMAP Server via SMTP.</p>
</li>
</ul>
</div>
</div>
</div>
</article>
</div>
</main>
</div>
<footer class="footer">
<p>This page was built using the Antora default UI.</p>
<p>The source code for this UI is licensed under the terms of the MPL-2.0 license.</p>
</footer>
<script id="site-script" src="../../../../_/js/site.js" data-ui-root-path="../../../../_"></script>
<script async src="../../../../_/js/vendor/highlight.js"></script>
</body>
</html>