blob: 97ea96f5b4de72924c4e78fbd023631ecff2f451 [file] [log] [blame]
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Apache Pony Mail (Incubating)</title>
<link rel="stylesheet" type="text/css" href="/css/default.css"/>
<link rel="stylesheet" type="text/css" href="/css/fa/fa.css"/>
<link rel="apple-touch-icon" sizes="57x57" href="/icons/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/icons/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/icons/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/icons/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/icons/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/icons/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/icons/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/icons/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/icons/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/icons/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/icons/favicon-16x16.png">
<link rel="manifest" href="/icons/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/icons/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<div id="titlebar">
<a href="/contribute.html"><img align='left' style="width: 130px; height: 125px; position: relative; left: -6px; top: -6px; border: 0;" src="/images/devme.png" alt="Fork/Hack on Pony Mail"></a>
<a href='/'><img src="/images/ponymail.svg" style="width: 110px; margin-left: -10px; margin-right: 20px; height: auto;" align="left"/></a>
<h1><a id="title" href="/" style="color: #FFF !important;">Apache Pony Mail&trade; (Incubating)</a></h1>
<div id="menubar">
<li><a href="/docs.html"><i class="fa fa-book"></i><span>Documentation</span></a></li>
<li><a href="/source.html"><i class="fa fa-git-square"></i><span>Source</span></a></li>
<li><a href="/downloads.html"><i class="fa fa-cloud-download"></i><span>Download</span></a></li>
<li><a href="/support.html"><i class="fa fa-question-circle"></i><span>Get support</span></a></li>
<li><a href="/contribute.html"><i class="fa fa-share-alt"></i><span>Contribute</span></a></li>
<li><a href="/about.html"><i class="fa fa-users"></i><span>About</span></a></li>
<h1 id='importingdatatoponymail'>Importing Data to Pony Mail<a href='#importingdatatoponymail' style='color: rgba(0,0,0,0);'>&para;</a></h1>
<p>Pony Mail supports many ways of importing your old mail archives via the
<code></code> script. For command line argument tips, run <code>python3 --help</code>.</p>
<p>Imports are digested equally every time (*), so you can
import from the same source multiple times without creating duplicate emails in
the archive. Both the archiver and the importer use the same digest method, so
they can overlap. Usually, you'll want to set up the archiver first, and when
emails start flowing through it, you'll use the importer to import older emails.</p>
<h2 id='importingfrommodmbox'>Importing from mod_mbox<a href='#importingfrommodmbox' style='color: rgba(0,0,0,0);'>&para;</a></h2>
<h3 id='warning'>Warning<a href='#warning' style='color: rgba(0,0,0,0);'>&para;</a></h3>
<p>Pony Mail relies on the mail headers to determine the correct list name for each email.</p>
<p>If in any doubt, import a single list at a time and use the --lid flag to specify the correct list name.</p>
<h3 id='importingasingledomain'>Importing a single domain<a href='#importingasingledomain' style='color: rgba(0,0,0,0);'>&para;</a></h3>
<p>Provided you have the main mod_mbox page at https://your.tld/mod_mbox/ and your (sub)domain resources at
https://your.tld/mod_mbox/$list-yourdomain/, you can import all lists from that domain using:</p>
<p><code>python3 --source https://your.tld/mod_mbox/ --mod-mbox --project yourdomain</code></p>
<p>For a quick update, which only imports the last 2 months of mail, append the <code>--quick</code> flag.</p>
<p>You can also import just a single list by specifying that list ID:</p>
<p><code>python3 --source https://your.tld/mod_mbox/ --mod-mbox --project listname-yourdomain</code></p>
<h3 id='importinganentirearchivemultipledomains'>Importing an entire archive (multiple domains)<a href='#importinganentirearchivemultipledomains' style='color: rgba(0,0,0,0);'>&para;</a></h3>
<p>To import an entire site, use the same command as above, but omit the <code>--project</code> flag</p>
<p><code>python3 --source https://your.tld/mod_mbox/ --mod-mbox</code></p>
<h3 id='settingthedomainorlistidproperlyincaseofvariance'>Setting the domain or list id properly in case of variance<a href='#settingthedomainorlistidproperlyincaseofvariance' style='color: rgba(0,0,0,0);'>&para;</a></h3>
<p>If your old archive varies in terms of list IDs across time, you can force harmonization by using the <code>--lid</code> or <code>--domain</code> flags:</p>
<p><code>python3 --source https://your.tld/mod_mbox/ --mod-mbox --project listid-yourdomain --lid "&lt;listid.yourdomain.tld&gt;"</code></p>
<p>This should only be done one list at a time.</p>
<h2 id='importingfrompipermail'>Importing from Pipermail<a href='#importingfrompipermail' style='color: rgba(0,0,0,0);'>&para;</a></h2>
<p>To import from pipermail, you will have to run the import one list at a time. As with mod_mbox imports, you must specify a source, but use <code>--pipermail</code> instead of <code>--mod-mbox</code>:</p>
<p><code>python3 --source https://your.tld/pipermail/foolist/ --pipermail</code></p>
<h3 id='pipermailandhtmlonlyemails'>Pipermail and html-only emails<a href='#pipermailandhtmlonlyemails' style='color: rgba(0,0,0,0);'>&para;</a></h3>
<p>While you can convert HTML-only emails to text using <code>--html2text</code>, Pipermail has some peculiarities
where it adds a text/plain message to these emails, thus preventing html2text from working. You can
circumvent this by using the <code>--ignorebody "foo"</code> arg to ignore all text/plain bodies containing <code>foo</code>.</p>
<p>While the <code>project</code> flag is not needed here, you may wish to specify the list ID for the import.</p>
<h2 id='importingfromlocallystoredmboxfiles'>Importing from locally stored mbox files<a href='#importingfromlocallystoredmboxfiles' style='color: rgba(0,0,0,0);'>&para;</a></h2>
<p>To import from one or more local mbox files, specify a filesystem path as the source:</p>
<p><code>python3 --source /tmp/mylists/</code></p>
<p>This will recursively import all files with the extension '.mbox'.</p>
<p>You can change the extension as follows:</p>
<p><code>python3 --source /tmp/mylists/ --ext .mbx</code></p>
<p>To match all files with any non-empty extension:</p>
<p><code>python3 --source /tmp/mylists/ --ext '.*'</code></p>
<p>To match files regardless of extension:</p>
<p><code>python3 --source /tmp/mylists/ --ext ''</code></p>
<p>Or you can import a single file:</p>
<p><code>python3 --source 2016-11.mbox</code></p>
<p>(This is supported in versions after 0.9)</p>
<h2 id='testarchives'>Test archives<a href='#testarchives' style='color: rgba(0,0,0,0);'>&para;</a></h2>
<p>We have a few test archives for those that wish to test large imports.
They can be found in gzip format at <a href=""></a></p>
<p>(*) The digest depends on the [archiver] generator setting in ponymail.cfg
If that varies between imports, then duplicates will occur</p>
<div style="display: inline-block; background: #BBB; margin: -10px; padding: 10px;">
<h4><a id="disclaimer"></a>Disclaimer</h4>
<div style="width: 65%; float: left;">
<p style="line-height: 12pt;">
Apache Pony Mail (Incubating) is an effort undergoing incubation at
The Apache Software Foundation (ASF), sponsored by the <a href="">
Apache Incubator</a>. Incubation is required of all newly accepted projects
until a further review indicates that the infrastructure,
communications, and decision making process have stabilized in a
manner consistent with other successful ASF projects. While
incubation status is not necessarily a reflection of the
completeness or stability of the code, it does indicate that the
project has yet to be fully endorsed by the ASF.
<div style="width: 20%; float: left; padding-top: 16px; margin-left: -8px;">
<a href=""><img src=""/></a>
<div style="width: 15%; float: left; line-height: 15px; padding-left: 22px;">
<a class="item" target="_blank" href="">Apache Incubator</a><br/>
<a class="item" target="_blank" href="">About the ASF<span></span></a><br/>
<a class="item" target="_blank" href="">Code of Conduct<span></span></a><br/>
<a class="item" target="_blank" href="">Thanks<span></span></a><br/>
<a class="item" target="_blank" href="">Become a Sponsor<span></span></a><br/>
<a class="item" target="_blank" href="">Security<span></span></a><br/>
<a class="item" target="_blank" href="">License<span></span></a><br/>