| <!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"> |
| </head><body> |
| <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™ (Incubating)</a></h1> |
| <div id="menubar"> |
| <ul> |
| <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> |
| </ul> |
| </div> |
| </div> |
| <h1 id='importingdatatoponymail'>Importing Data to Pony Mail<a href='#importingdatatoponymail' style='color: rgba(0,0,0,0);'>¶</a></h1> |
| <p>Pony Mail supports many ways of importing your old mail archives via the |
| <code>import-mbox.py</code> script. For command line argument tips, run <code>python3 |
| import-mbox.py --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);'>¶</a></h2> |
| <h3 id='importingasingledomain'>Importing a single domain<a href='#importingasingledomain' style='color: rgba(0,0,0,0);'>¶</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 import-mbox.py --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 import-mbox.py --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);'>¶</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 import-mbox.py --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);'>¶</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 import-mbox.py --source https://your.tld/mod_mbox/ --mod-mbox --project listid-yourdomain --lid "<listid.yourdomain.tld>"</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);'>¶</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 import-mbox.py --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);'>¶</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);'>¶</a></h2> |
| <p>To import from one or more local mbox files, specify a filesystem path as the source:</p> |
| <p><code>python3 import-mbox.py --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 import-mbox.py --source /tmp/mylists/ --ext .mbx</code></p> |
| <p>To match all files with any non-empty extension:</p> |
| <p><code>python3 import-mbox.py --source /tmp/mylists/ --ext '.*'</code></p> |
| <p>To match files regardless of extension:</p> |
| <p><code>python3 import-mbox.py --source /tmp/mylists/ --ext ''</code></p> |
| <p>Or you can import a single file:</p> |
| <p><code>python3 import-mbox.py --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);'>¶</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="http://ponymail.info/mboxes/">http://ponymail.info/mboxes/</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="https://incubator.apache.org"> |
| 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. |
| </p> |
| </div> |
| <div style="width: 20%; float: left; padding-top: 16px; margin-left: -8px;"> |
| <a href="https://incubator.apache.org"><img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png"/></a> |
| </div> |
| <div style="width: 15%; float: left; line-height: 15px; padding-left: 22px;"> |
| <a class="item" target="_blank" href="https://incubator.apache.org/">Apache Incubator</a><br/> |
| <a class="item" target="_blank" href="https://www.apache.org/">About the ASF<span></span></a><br/> |
| <a class="item" target="_blank" href="https://www.apache.org/foundation/policies/conduct.html">Code of Conduct<span></span></a><br/> |
| <a class="item" target="_blank" href="https://www.apache.org/foundation/thanks.html">Thanks<span></span></a><br/> |
| <a class="item" target="_blank" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor<span></span></a><br/> |
| <a class="item" target="_blank" href="https://www.apache.org/security/">Security<span></span></a><br/> |
| <a class="item" target="_blank" href="https://www.apache.org/licenses/LICENSE-2.0">License<span></span></a><br/> |
| </div> |
| </div> |
| </body></html> |