Deploy new website version
Project: http://git-wip-us.apache.org/repos/asf/james-site/repo Commit: http://git-wip-us.apache.org/repos/asf/james-site/commit/e4e14366 Tree: http://git-wip-us.apache.org/repos/asf/james-site/tree/e4e14366 Diff: http://git-wip-us.apache.org/repos/asf/james-site/diff/e4e14366 Branch: refs/heads/asf-site Commit: e4e1436605a03e9b621999b12828e220ee4b3afb Parents: 78bf63c Author: benwa <[email protected]> Authored: Thu Jul 5 09:14:08 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Jul 5 09:14:08 2018 +0700 ---------------------------------------------------------------------- content/contribute.html | 8 +- content/documentation.html | 8 +- content/download.html | 8 +- content/feed.xml | 4 +- content/guidelines.html | 8 +- content/howTo/imap-server.html | 281 ++++++++ content/howTo/index.html | 166 +++++ content/howTo/mail-processing.html | 318 +++++++++ content/howTo/spf.html | 264 +++++++ .../images/guice-jpa-architecture-overview.png | Bin 0 -> 41998 bytes content/index.html | 3 + content/license.html | 8 +- content/mail.html | 8 +- content/mailbox/index.html | 8 +- content/mailbox/mailbox-api.html | 8 +- content/mailbox/mailbox-cassandra.html | 8 +- content/mailbox/mailbox-hbase.html | 8 +- content/mailbox/mailbox-jcr.html | 8 +- content/mailbox/mailbox-jpa.html | 8 +- content/mailbox/mailbox-maildir.html | 8 +- content/mailbox/mailbox-memory.html | 8 +- content/mailbox/mailbox-spring.html | 8 +- content/mailbox/mailbox-store.html | 8 +- content/mailbox/mailbox-tool.html | 8 +- content/mailbox/source-code.html | 8 +- content/mailet/ai/index.html | 8 +- content/mailet/api/index.html | 8 +- content/mailet/base/index.html | 8 +- content/mailet/conf.html | 8 +- content/mailet/crypto/conf.html | 8 +- content/mailet/crypto/index.html | 8 +- content/mailet/examples/standard.html | 8 +- content/mailet/index.html | 8 +- .../mailet/mailetdocs-maven-plugin/index.html | 8 +- content/mailet/quickstart.html | 8 +- content/mailet/release-notes-old.html | 8 +- content/mailet/release-notes.html | 8 +- content/mailet/standard/conf.html | 8 +- content/mailet/standard/index.html | 8 +- content/mailet/stylesheets/project.html | 8 +- content/mailet/usage.html | 8 +- content/mpt/index.html | 8 +- content/mpt/release-notes.html | 8 +- content/project-info.html | 8 +- content/protocols/changes.html | 8 +- content/protocols/imap4.html | 8 +- content/protocols/index.html | 8 +- content/protocols/pop3.html | 8 +- content/protocols/smtp.html | 8 +- content/protocols/source-code.html | 8 +- content/server/advantages.html | 10 +- content/server/archive/announcement_2_1.html | 8 +- content/server/archive/architecture_v1_2.html | 8 +- content/server/archive/architecture_v2_0.html | 8 +- content/server/archive/configuration_v2_0.html | 8 +- content/server/archive/document_archive.html | 8 +- content/server/archive/install.html | 8 +- content/server/archive/usingJDBC_v2.0.html | 8 +- content/server/archive/usingLDAP_v1_2.html | 8 +- content/server/archive/usingTLS_v1_2.html | 8 +- content/server/config-antispam.html | 15 +- content/server/config-cassandra.html | 17 +- content/server/config-dnsservice.html | 23 +- content/server/config-domainlist.html | 15 +- content/server/config-elasticsearch.html | 15 +- content/server/config-events.html | 15 +- content/server/config-fetchmail.html | 15 +- content/server/config-guice.html | 15 +- content/server/config-imap4.html | 19 +- content/server/config-jmap.html | 362 ++++++++++ content/server/config-listeners.html | 27 +- content/server/config-mailbox.html | 15 +- content/server/config-mailetcontainer.html | 15 +- content/server/config-mailrepositorystore.html | 15 +- content/server/config-pop3.html | 19 +- content/server/config-quota.html | 15 +- .../server/config-recipientrewritetable.html | 15 +- content/server/config-sieve.html | 15 +- content/server/config-smtp-lmtp.html | 19 +- content/server/config-spring-jpa-postgres.html | 15 +- content/server/config-ssl-tls.html | 15 +- content/server/config-system.html | 19 +- content/server/config-users.html | 15 +- content/server/config.html | 31 +- content/server/dev-build.html | 12 +- content/server/dev-database-schema.html | 12 +- content/server/dev-extend-mailet.html | 12 +- content/server/dev-extend-matcher.html | 12 +- content/server/dev-extend-smtp-hook.html | 12 +- content/server/dev-extend.html | 12 +- content/server/dev-provided-smtp-hooks.html | 12 +- content/server/dev-provided.html | 12 +- content/server/dev.html | 12 +- content/server/feature-mailetcontainer.html | 12 +- content/server/feature-performance.html | 12 +- content/server/feature-persistence.html | 12 +- content/server/feature-protocols.html | 15 +- content/server/feature-queue-priority.html | 12 +- content/server/feature-security.html | 12 +- content/server/feature-smtp-hooks.html | 12 +- content/server/features.html | 12 +- content/server/index.html | 10 +- content/server/install.html | 12 +- content/server/install/guice-cassandra.html | 12 +- content/server/install/guice-jpa-smtp.html | 12 +- content/server/install/guice-jpa.html | 12 +- content/server/manage-cli.html | 12 +- content/server/manage-jmx.html | 8 +- content/server/manage-webadmin.html | 698 ++++++++++++------- content/server/manage.html | 12 +- content/server/metrics.html | 14 +- content/server/monitor-folders.html | 12 +- content/server/monitor-jmx.html | 12 +- content/server/monitor-logging.html | 12 +- content/server/monitor.html | 12 +- content/server/objectives.html | 10 +- content/server/other-versions.html | 10 +- content/server/packaging.html | 12 +- content/server/quick-start-cassandra.html | 8 +- content/server/quick-start.html | 12 +- content/server/release-notes.html | 10 +- content/server/rfcs.html | 10 +- content/server/upgrade-2.3.html | 12 +- content/server/upgrade-database.html | 12 +- content/server/upgrade.html | 12 +- content/support.html | 8 +- content/team-list.html | 8 +- content/thanks.html | 8 +- 128 files changed, 2562 insertions(+), 850 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/contribute.html ---------------------------------------------------------------------- diff --git a/content/contribute.html b/content/contribute.html index 50dc4ea..be38908 100644 --- a/content/contribute.html +++ b/content/contribute.html @@ -18,7 +18,7 @@ under the License. --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<!-- Generated by Apache Maven Doxia at 2018-06-07 --> +<!-- Generated by Apache Maven Doxia at 2018-07-05 --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> @@ -37,7 +37,7 @@ <script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script> <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /> <meta name="author" content="James Project Web Team" /> - <meta name="Date-Revision-yyyymmdd" content="20180607" /> + <meta name="Date-Revision-yyyymmdd" content="20180705" /> <meta http-equiv="Content-Language" content="en" /> <!-- Google Analytics --> @@ -75,7 +75,7 @@ <div class="xleft"> - <span id="publishDate">Last Published: 2018-06-07</span> + <span id="publishDate">Last Published: 2018-07-05</span> </div> <div class="xright"> <a href="index.html" title="Home">Home</a> | @@ -138,7 +138,7 @@ </li> </ul> </li> - <li class="collapsed"> + <li class="collapsed"> <a href="server/index.html" title="Server">Server</a> </li> <li class="collapsed"> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/documentation.html ---------------------------------------------------------------------- diff --git a/content/documentation.html b/content/documentation.html index ac47f5e..8cf138c 100644 --- a/content/documentation.html +++ b/content/documentation.html @@ -18,7 +18,7 @@ under the License. --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<!-- Generated by Apache Maven Doxia at 2018-06-07 --> +<!-- Generated by Apache Maven Doxia at 2018-07-05 --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> @@ -37,7 +37,7 @@ <script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script> <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /> <meta name="author" content="James Project Web Team" /> - <meta name="Date-Revision-yyyymmdd" content="20180607" /> + <meta name="Date-Revision-yyyymmdd" content="20180705" /> <meta http-equiv="Content-Language" content="en" /> <script type="text/javascript" src="js/james/index.js?v=2"></script><script type="text/javascript" src="js/james/functions.js"></script> <!-- Google Analytics --> @@ -75,7 +75,7 @@ <div class="xleft"> - <span id="publishDate">Last Published: 2018-06-07</span> + <span id="publishDate">Last Published: 2018-07-05</span> </div> <div class="xright"> <a href="index.html" title="Home">Home</a> | @@ -138,7 +138,7 @@ </li> </ul> </li> - <li class="collapsed"> + <li class="collapsed"> <a href="server/index.html" title="Server">Server</a> </li> <li class="collapsed"> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/download.html ---------------------------------------------------------------------- diff --git a/content/download.html b/content/download.html index b851169..4e95a72 100644 --- a/content/download.html +++ b/content/download.html @@ -18,7 +18,7 @@ under the License. --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<!-- Generated by Apache Maven Doxia at 2018-06-07 --> +<!-- Generated by Apache Maven Doxia at 2018-07-05 --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> @@ -37,7 +37,7 @@ <script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script> <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /> <meta name="author" content="Apache James Mail Server Project" /> - <meta name="Date-Revision-yyyymmdd" content="20180607" /> + <meta name="Date-Revision-yyyymmdd" content="20180705" /> <meta http-equiv="Content-Language" content="en" /> <!-- Google Analytics --> @@ -133,7 +133,7 @@ <div class="xleft"> - <span id="publishDate">Last Published: 2018-06-07</span> + <span id="publishDate">Last Published: 2018-07-05</span> </div> <div class="xright"> <a href="index.html" title="Home">Home</a> | @@ -164,7 +164,7 @@ <li class="collapsed"> <a href="documentation.html" title="About James">About James</a> </li> - <li class="collapsed"> + <li class="collapsed"> <a href="server/index.html" title="Server">Server</a> </li> <li class="collapsed"> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/feed.xml ---------------------------------------------------------------------- diff --git a/content/feed.xml b/content/feed.xml index 441b674..ff321a5 100644 --- a/content/feed.xml +++ b/content/feed.xml @@ -24,8 +24,8 @@ </description> <link>http://james.apache.org/</link> <atom:link href="http://james.apache.org/feed.xml" rel="self" type="application/rss+xml"/> - <pubDate>Thu, 07 Jun 2018 15:56:52 +0700</pubDate> - <lastBuildDate>Thu, 07 Jun 2018 15:56:52 +0700</lastBuildDate> + <pubDate>Thu, 05 Jul 2018 09:13:05 +0700</pubDate> + <lastBuildDate>Thu, 05 Jul 2018 09:13:05 +0700</lastBuildDate> <generator>Jekyll v3.4.3</generator> <item> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/guidelines.html ---------------------------------------------------------------------- diff --git a/content/guidelines.html b/content/guidelines.html index 53a4285..a3cfb45 100644 --- a/content/guidelines.html +++ b/content/guidelines.html @@ -18,7 +18,7 @@ under the License. --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<!-- Generated by Apache Maven Doxia at 2018-06-07 --> +<!-- Generated by Apache Maven Doxia at 2018-07-05 --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> @@ -37,7 +37,7 @@ <script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script> <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /> <meta name="author" content="James Project Web Team" /> - <meta name="Date-Revision-yyyymmdd" content="20180607" /> + <meta name="Date-Revision-yyyymmdd" content="20180705" /> <meta http-equiv="Content-Language" content="en" /> <!-- Google Analytics --> @@ -75,7 +75,7 @@ <div class="xleft"> - <span id="publishDate">Last Published: 2018-06-07</span> + <span id="publishDate">Last Published: 2018-07-05</span> </div> <div class="xright"> <a href="index.html" title="Home">Home</a> | @@ -138,7 +138,7 @@ </li> </ul> </li> - <li class="collapsed"> + <li class="collapsed"> <a href="server/index.html" title="Server">Server</a> </li> <li class="collapsed"> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/howTo/imap-server.html ---------------------------------------------------------------------- diff --git a/content/howTo/imap-server.html b/content/howTo/imap-server.html new file mode 100644 index 0000000..8949423 --- /dev/null +++ b/content/howTo/imap-server.html @@ -0,0 +1,281 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"/> + <title>Apache James</title> + + <link rel="stylesheet" type="text/css" href="/assets/css/main.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css"> + <link rel="shortcut icon" href="/images/james-logo.png"> + </head> +<body> + <!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<link href="assets/css/lightbox.css" rel="stylesheet"> +<link href="assets/css/lity.min.css" rel="stylesheet" /> +<div id="wrapper"> + <div class="apache_ref"> + <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a> + </div> + <div class="apache_ref_mobile"> + <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a> + </div> + <div class="apache_ref_left"> + <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a> + </div> + <div class="apache_ref_left_mobile"> + <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a> + </div> + + <!-- Header --> + <header id="header" class="alt"> + <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div> + <h1 class="hidden">James Enterprise Mail Server</h1> + <h2>Emails at the heart of your business logic</h2> + </header> + + <!-- Main --> + <div id="main"> + + <!-- Introduction --> + <section id="intro" class="main special"> + <div class=""> + <div class="content align-left"> + <header class="major"> + <h1><b>Setting up an IMAP server</b></h1> + </header> + + <p> + This document will present how to set up a James server in order to serve as a personal IMAP + SMTP + server. We will cover: + </p> + + <ul> + <li>DNS creation and MX record</li> + <li>Server components description</li> + <li>Generation of a custom keystore</li> + <li>Starting James</li> + <li>Basic James administration</li> + <li>Additional features one might want to enable...</li> + </ul> + + <p> + This guide rely on the JPA Guice Docker image. To run it, one need to have docker installed. + </p> + + <header class="major"> + <h2><b>DNS resolution</b></h2> + </header> + + <p> + Someone willing to send you an email will first have to discover which IP your mail server have. + The way this is achieved is through MX (means Mail eXchange) DNS record. + </p> + + <p> + Imagine [email protected] sends a mail to [email protected]. Bob will: + </p> + + <ol> + <li>Ask <code>company.com</code> DNS server its MX entries</li> + <li><code>company.com</code> respond that it is <code>mx.company.com</code></li> + <li>Bob resolves <code>mx.company.com</code> ip address...</li> + <li>And can establish a connection to <code>mx.company.com</code> to send an email to Alice</li> + </ol> + + <p>All is needed is a MX entry in domain name resolution pointing to the future IP of your James server.</p> + + <header class="major"> + <h2><b>JAMES architecture</b></h2> + </header> + + <p>JPA guice docker image relies on an embedded derby database for storing data. Note that Apache Lucene library + is used for email search. A mail queue is implemented on top of an embedded Apache ActiveMQ. Hence James do not need + any external service for being running. + </p> + + <img src="/images/guice-jpa-architecture-overview.png"> + + <p> + JPA guice offers the following protocols: + </p> + + <ul class="no-padding"> + <li><b>SMTP</b> For receiving emails</li> + <li><b>IMAP</b> For reading emails</li> + <li><b><a href="http://james.apache.org/server/manage-webadmin.html">WebAdmin</a></b> is a REST API allowing you to manage Apache JAMES</li> + </ul> + + <p>The following protocols are also available:</p> + + <ul class="no-padding"> + <li><b>LMTP</b> local version of SMTP</li> + <li><b>POP3</b> For reading emails. Lacks tests</li> + <li><b>JMX</b> is used by a <a href="http://james.apache.org/server/manage-cli.html">command line</a> for administrating Apache James</li> + <li>And <a href="http://james.apache.org/server/feature-protocols.html">more</a>...</li> + </ul> + + <header class="major"> + <h2><b>Generation of a custom keystore</b></h2> + </header> + + <p>In order to maintain a good level of privacy and security, James is relying on TLS cryptography + for securing exchanges. We thus need to generate our own personal keystore. Note that this guide do not + cover generating a keystore from SSL certificates. A security exception might be configured on the Mail + User Agent.</p> + + <p>In order to create a keystore, please run: <code>keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore</code>. + James is configured with a default password <code>james72laBalle</code> (used to read the keystore). However, we will be overriding the + configuration of the docker image, so you can be defining your own.</p> + + <header class="major"> + <h2><b>Starting james</b></h2> + </header> + + <p>We want to override the configuration of the docker image with a volume.</p> + + <p>First let's retrieve a valid configuration:</p> + + <pre><code>$ git clone https://github.com/apache/james-project +$ cp -rf james-project/dockerfiles/run/guice/jpa/destination/conf conf +$ mv keystore conf/keystore</code></pre> + + <p>Modify all protocol configuration files to match your keystore password (imapserver.xml, lmtpserver.xml, managesieveserver.xml, pop3server.xml, smtpserver.xml).</p> + + <p>We will create a local folder for holding data out of the container:</p> + + <pre><code>mkdir var</code></pre> + + + <p>Then, let's start James:</p> + + <pre><code>docker run \ + --name james_run \ + --port "25:25" --port "465:465" --port "587:587" \ + --port "143:143" --port "993:993" \ + --volume "$PWD/conf:/root/conf/" \ + --volume "$PWD/var:/root/var/" \ +linagora/james-jpa-guice:latest</code></pre> + + + <header class="major"> + <h2><b>Administrating James</b></h2> + </header> + + <p>We now have a running James server. We just need to tell him which users and domains it should be handling mails for. + We will, in order to do this, use the command line:</p> + + <pre><code>docker exec james_run java -jar /root/james-cli.jar AddDomain domain.tld +docker exec james_run java -jar /root/james-cli.jar AddUser [email protected] secretPassword</code></pre> + + <p>The command line client can be used for several other purposes like managing quota, setting addresses redirections, etc..</p> + + <header class="major"> + <h2><b>Additional features</b></h2> + </header> + + <p>James is a large project with many features. You can go further and complete your installation with + an <a href="http://james.apache.org/server/config-antispam.html">AntiSpam system</a>, or set up + <a href="http://james.apache.org/server/metrics.html">metric display</a>, collect logs in ElasticSearch for a display in Kibana, + and much more!</p> + + <p>Also, James offers support for <a href="https://medium.com/linagora-engineering/installing-james-3-0-with-spf-verification-421b26b92f11">SPF</a> + and DKIM standard, which increase the trust external people can get in your mail system.</p> + + </div> + <footer class="major"> + <ul class="actions align-center"> + <li><a href="index.html" class="button">go back to other how-tos</a></li> + </ul> + </footer> + </div> + </section> + + </div> + <footer id="footer" class="major"> + <section> + <h2>James</h2> + <ul class="no-padding"> + <li class="no-padding"><a href="https://james.apache.org/#intro" class="active">About</a></li> + <li class="no-padding"><a href="https://james.apache.org/#first">Get Started</a></li> + <li class="no-padding"><a href="https://james.apache.org/#posts">Last Posts</a></li> + <li class="no-padding"><a href="https://james.apache.org/#second">Community</a></li> + <li class="no-padding"><a href="https://james.apache.org/#third">Contribute</a></li> + <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li> + </ul> + </section> + <section> + <h2>Connect</h2> + <ul class="icons"> + <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li> + <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li> + <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li> + <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li> + <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li> + <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li> + </ul> + </section> + <section class="legal-section"> + <h2>Copyright</h2> + Apache James and related projects are trademarks of the Apache Software Foundation.<br/> + <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/> + <a href="https://www.apache.org/licenses/">License</a><br/> + <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/> + <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/> + Design: <a href="https://html5up.net">HTML5 UP</a><br/> + Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design + </section> + </footer> +</div> + +<!-- Scripts --> +<script src="assets/js/jquery.min.js"></script> +<script src="assets/js/jquery.scrollex.min.js"></script> +<script src="assets/js/jquery.scrolly.min.js"></script> +<script src="assets/js/skel.min.js"></script> +<script src="assets/js/util.js"></script> +<script src="assets/js/lightbox.js"></script> +<script src="assets/js/github-fetch.js"></script> +<script src="assets/js/lity.min.js"></script> +<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]--> +<script src="assets/js/main.js"></script> + + +</body> +</html> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/howTo/index.html ---------------------------------------------------------------------- diff --git a/content/howTo/index.html b/content/howTo/index.html new file mode 100644 index 0000000..3c3ac62 --- /dev/null +++ b/content/howTo/index.html @@ -0,0 +1,166 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"/> + <title>Apache James</title> + + <link rel="stylesheet" type="text/css" href="/assets/css/main.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css"> + <link rel="shortcut icon" href="/images/james-logo.png"> + </head> +<body> + <!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<link href="assets/css/lightbox.css" rel="stylesheet"> +<link href="assets/css/lity.min.css" rel="stylesheet" /> +<div id="wrapper"> + <div class="apache_ref"> + <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a> + </div> + <div class="apache_ref_mobile"> + <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a> + </div> + <div class="apache_ref_left"> + <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a> + </div> + <div class="apache_ref_left_mobile"> + <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a> + </div> + + <!-- Header --> + <header id="header" class="alt"> + <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div> + <h1 class="hidden">James Enterprise Mail Server</h1> + <h2>Emails at the heart of your business logic</h2> + </header> + + <!-- Main --> + <div id="main"> + + <!-- Introduction --> + <section id="intro" class="main special"> + <div class=""> + <div class="content"> + <header class="major"> + <h2>James how to's...</h2> + </header> + <p class="align-left">James can be used for a wide variety of cases here is a little list of what you can use it for.<br/> + This section explains in detail how to achieve these cool features in a straightforward way...</p> + + <a href="mail-processing.html" + data-lightbox="james-schema" + data-title="Customized mail processing" + alt="Customized mail processing" + class="james-schema" > + <span class="fa fa-sitemap"></span>Customized mail processing<span class="fa fa-long-arrow-right"></span> + </a> + <a href="imap-server.html" + data-lightbox="james-schema" + data-title="Setting up an IMAP server" + alt="Setting up an IMAP server" + class="james-schema" > + <span class="fa fa-sitemap"></span>Setting up an IMAP server<span class="fa fa-long-arrow-right"></span> + </a> + <a href="spf.html" + data-lightbox="james-schema" + data-title="Configuring SPF" + alt="Configuring SPF" + class="james-schema" > + <span class="fa fa-sitemap"></span>Configuring SPF<span class="fa fa-long-arrow-right"></span> + </a> + + <br/> + <br/> + + </div> + </div> + </section> + + </div> + <footer id="footer" class="major"> + <section> + <h2>James</h2> + <ul class="no-padding"> + <li class="no-padding"><a href="https://james.apache.org/#intro" class="active">About</a></li> + <li class="no-padding"><a href="https://james.apache.org/#first">Get Started</a></li> + <li class="no-padding"><a href="https://james.apache.org/#posts">Last Posts</a></li> + <li class="no-padding"><a href="https://james.apache.org/#second">Community</a></li> + <li class="no-padding"><a href="https://james.apache.org/#third">Contribute</a></li> + <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li> + </ul> + </section> + <section> + <h2>Connect</h2> + <ul class="icons"> + <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li> + <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li> + <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li> + <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li> + <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li> + <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li> + </ul> + </section> + <section class="legal-section"> + <h2>Copyright</h2> + Apache James and related projects are trademarks of the Apache Software Foundation.<br/> + <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/> + <a href="https://www.apache.org/licenses/">License</a><br/> + <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/> + <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/> + Design: <a href="https://html5up.net">HTML5 UP</a><br/> + Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design + </section> + </footer> +</div> + +<!-- Scripts --> +<script src="assets/js/jquery.min.js"></script> +<script src="assets/js/jquery.scrollex.min.js"></script> +<script src="assets/js/jquery.scrolly.min.js"></script> +<script src="assets/js/skel.min.js"></script> +<script src="assets/js/util.js"></script> +<script src="assets/js/lightbox.js"></script> +<script src="assets/js/github-fetch.js"></script> +<script src="assets/js/lity.min.js"></script> +<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]--> +<script src="assets/js/main.js"></script> + + +</body> +</html> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/howTo/mail-processing.html ---------------------------------------------------------------------- diff --git a/content/howTo/mail-processing.html b/content/howTo/mail-processing.html new file mode 100644 index 0000000..1d633a5 --- /dev/null +++ b/content/howTo/mail-processing.html @@ -0,0 +1,318 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"/> + <title>Apache James</title> + + <link rel="stylesheet" type="text/css" href="/assets/css/main.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css"> + <link rel="shortcut icon" href="/images/james-logo.png"> + </head> +<body> + <!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<link href="assets/css/lightbox.css" rel="stylesheet"> +<link href="assets/css/lity.min.css" rel="stylesheet" /> +<div id="wrapper"> + <div class="apache_ref"> + <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a> + </div> + <div class="apache_ref_mobile"> + <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a> + </div> + <div class="apache_ref_left"> + <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a> + </div> + <div class="apache_ref_left_mobile"> + <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a> + </div> + + <!-- Header --> + <header id="header" class="alt"> + <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div> + <h1 class="hidden">James Enterprise Mail Server</h1> + <h2>Emails at the heart of your business logic</h2> + </header> + + <!-- Main --> + <div id="main"> + + <!-- Introduction --> + <section id="intro" class="main special"> + <div class=""> + <div class="content align-left"> + <header class="major"> + <h1>How to customize mail processing...</h1> + </header> + <header class="major"> + <h2><b>Mail processing component overview</b></h2> + </header> + <p class="align-left">At the heart of James lies the Mailet container, which allows mail processing. This is + splitted into smaller units, with specific responsibilities: + + </p> + + <ul class="no-padding"> + <li><b>Mailets:</b> Are operations performed with the mail: modifying it, performing a side-effect, etc...</li> + <li><b>Matchers:</b> Are per-recipient conditions for mailet executions</li> + <li><b>Processors:</b> Are matcher/mailet pair execution threads</li> + </ul> + + <p> Read <a href="/server/feature-mailetcontainer.html">this</a> for more explanations of mailet container concepts.</p> + + <p>Once we define the mailet container content through the <a href="/server/config-mailetcontainer.html">mailetcontailer.xml</a> file. + Hence, we can arrange James standard components listed <a href="/server/dev-provided-mailets.html">here</a> to achieve basic logic. But what if our goals are more + complex? What if we need our own processing components?</p> + + <p>This page will propose a 'hands on practice' how-to using James 3.0.1. We will implement a custom mailet and a custom matcher, + then deploy it in a James server.</p> + + <p>We need to choose our use case. We will, when a mail is delayed over one day, write a mail to the original sender + to inform him about the delay, say that we are sorry, and send him a promotion code...<pre></pre></p> + + + <header class="major"> + <h2><b>Writing custom mailets and matchers</b></h2> + </header> + + <p>None of the matchers and mailets available in James allows us to implement what we want. We will have to + write our own mailet and matcher in a separated maven project depending on James Mailet API.</p> + + <p>We will write a <b>IsDelayedForMoreThan</b> matcher with a configurable delay. If the Sent Date of incoming emails is older than specified delay, then the emails + should be matched (return all mail recipients). Otherwise, we just return an empty list of recipients.</p> + + <p>To ease our Job, we can rely on the <b>org.apache.james.apache-mailet-base</b> maven project, which provides us a <b>GenericMatcher</b> that we can extend.</p> + + <p>Here is the dependency:</p> + + <pre><code><dependency> + <groupId>org.apache.james</groupId> + <artifactId>apache-mailet-base</artifactId> +</dependency></code></pre> + + <p>The main method of a matcher is the <b>match</b> method:</p> + + <pre><code>Collection<MailAddress> match(Mail mail) throws MessagingException;</code></pre> + + <p>For us, it becomes, with <b>maxDelay</b> being previously configured:</p> + + <pre><code> private final Clock clock; + private Duration maxDelay; + + @Override + public Collection<MailAddress> match(Mail mail) throws MessagingException { + Date sentDate = mail.getMessage().getSentDate(); + + if (clock.instant().isAfter(sentDate.toInstant().plusMillis(maxDelay.toMillis()))) { + return ImmutableList.copyOf(mail.getRecipients()); + } + return ImmutableList.of(); + }</code></pre> + + <p><b>GenericMatcher</b> exposes us the condition that had been configured. We will use it to compute <b>maxDelay</b>. + We can do it in the <b>init()</b> method exposed by the generic matcher:</p> + + <pre><code> + public static final TimeConverter.Unit DEFAULT_UNIT = TimeConverter.Unit.HOURS; + + @Override + public void init() { + String condition = getCondition(); + maxDelay = Duration.ofMillis(TimeConverter.getMilliSeconds(condition, DEFAULT_UNIT)); + }</code></pre> + + <p>Now, let's take a look at the <b>SendPromotionCode</b> mailet. Of course, we want to write a generic mailet + with a configurable reason (why are we sending the promotion code). To keep things simple, only one promotion + code will be used, and will be written in the configuration. We can here also simply extend the + <b>GenericMailet</b> helper class.</p> + + <p>The main method of a mailet is the <b>service</b> method:</p> + + <pre><code>void service(Mail mail) throws MessagingException</code></pre> + + <p>For us, it becomes, with <b>reason</b> and <b>promotionCode</b> being previously configured:</p> + + <pre><code> public static final boolean REPLY_TO_SENDER_ONLY = false; + + private String reason; + private String promotionCode; + + @Override + public void service(Mail mail) throws MessagingException { + MimeMessage response = (MimeMessage) mail.getMessage() + .reply(REPLY_TO_SENDER_ONLY); + + response.setText(reason + "\n\n" + + "Here is the following promotion code that you can use on your next order: " + promotionCode); + + MailAddress sender = getMailetContext().getPostmaster(); + ImmutableList<MailAddress> recipients = ImmutableList.of(mail.getSender()); + + getMailetContext() + .sendMail(sender, recipients, response); + }</code></pre> + + <p>Note that we can interact with the mail server through the mailet context for sending mails, knowing postmaster, etc...</p> + + <p><b>GenericMailet</b> exposes us the 'init parameters' that had been configured for this mailet. We will + use it to retireve <b>reason</b> and <b>promotionCode</b>. + We can do it in the <b>init()</b> method exposed by the generic mailet:</p> + + <pre><code> @Override + public void init() throws MessagingException { + reason = getInitParameter("reason"); + promotionCode = getInitParameter("promotionCode"); + + if (Strings.isNullOrEmpty(reason)) { + throw new MessagingException("'reason' is compulsory"); + } + if (Strings.isNullOrEmpty(promotionCode)) { + throw new MessagingException("'promotionCode' is compulsory"); + } + }</code></pre> + + <p>You can retrieve the sources of this mini-project on <a href="https://github.com/apache/james-project/examples/custom-mailets">GitHub</a></p> + + <header class="major"> + <h2><b>Loading custom mailets with James</b></h2> + </header> + + <p>Now is the time we will run James with our awesome matcher and mailet configured.</p> + + <p>First, we will need to compile our project with <code>mvn clean install</code>. A jar will be outputted in the target directory.</p> + + <p>Then, we will write the <code>mailetcontainer.xml</code> file expressing the logic we want:</p> + + <pre><code> +<mailetcontainer enableJmx="true"> + + <context> + <postmaster>[email protected]</postmaster> + </context> + + <spooler> + <threads>20</threads> + </spooler> + + <processors> + <processor state="root" enableJmx="true"> + <mailet match="All" class="PostmasterAlias"/> + <mailet match="org.apache.james.examples.custom.mailets.IsDelayedForMoreThan=1 day" + class="org.apache.james.examples.custom.mailets.SendPromotionCode"> + <reason>Your email had been delayed for a long time. Because we are sorry about it, please find the + following promotion code.</reason> + <promotionCode>1542-2563-5469</promotionCode> + </mailet> + <!-- Rest of the configuration --> + </processor> + + <!-- Other processors --> + </processors> +</mailetcontainer></code></pre> + + <p>Finally, we will start a James server using that. We will rely on docker default image for simplicity. + We need to be using the <b>mailetcontainer.xml</b> configuration that we had been writing and position + the jar in the <b>extensions-jars</b> folder (specific to guice). This can be achieved with the following command:</p> + + <pre><code>docker run -p "25:25" -p "143:143" \ + -v "$PWD/src/main/resources/mailetcontainer.xml:/root/conf/mailetcontainer.xml" \ + -v "$PWD/target/custom-mailets-3.1.0-SNAPSHOT.jar:/root/extensions-jars/custom-mailets.jar" \ + linagora/james-jpa-sample:latest</code></pre> + + </div> + <footer class="major"> + <ul class="actions align-center"> + <li><a href="index.html" class="button">go back to other how-tos</a></li> + </ul> + </footer> + </div> + </section> + + </div> + <footer id="footer" class="major"> + <section> + <h2>James</h2> + <ul class="no-padding"> + <li class="no-padding"><a href="https://james.apache.org/#intro" class="active">About</a></li> + <li class="no-padding"><a href="https://james.apache.org/#first">Get Started</a></li> + <li class="no-padding"><a href="https://james.apache.org/#posts">Last Posts</a></li> + <li class="no-padding"><a href="https://james.apache.org/#second">Community</a></li> + <li class="no-padding"><a href="https://james.apache.org/#third">Contribute</a></li> + <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li> + </ul> + </section> + <section> + <h2>Connect</h2> + <ul class="icons"> + <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li> + <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li> + <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li> + <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li> + <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li> + <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li> + </ul> + </section> + <section class="legal-section"> + <h2>Copyright</h2> + Apache James and related projects are trademarks of the Apache Software Foundation.<br/> + <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/> + <a href="https://www.apache.org/licenses/">License</a><br/> + <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/> + <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/> + Design: <a href="https://html5up.net">HTML5 UP</a><br/> + Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design + </section> + </footer> +</div> + +<!-- Scripts --> +<script src="assets/js/jquery.min.js"></script> +<script src="assets/js/jquery.scrollex.min.js"></script> +<script src="assets/js/jquery.scrolly.min.js"></script> +<script src="assets/js/skel.min.js"></script> +<script src="assets/js/util.js"></script> +<script src="assets/js/lightbox.js"></script> +<script src="assets/js/github-fetch.js"></script> +<script src="assets/js/lity.min.js"></script> +<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]--> +<script src="assets/js/main.js"></script> + + +</body> +</html> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/howTo/spf.html ---------------------------------------------------------------------- diff --git a/content/howTo/spf.html b/content/howTo/spf.html new file mode 100644 index 0000000..1e2c6a3 --- /dev/null +++ b/content/howTo/spf.html @@ -0,0 +1,264 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"/> + <title>Apache James</title> + + <link rel="stylesheet" type="text/css" href="/assets/css/main.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css"> + <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css"> + <link rel="shortcut icon" href="/images/james-logo.png"> + </head> +<body> + <!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<link href="assets/css/lightbox.css" rel="stylesheet"> +<link href="assets/css/lity.min.css" rel="stylesheet" /> +<div id="wrapper"> + <div class="apache_ref"> + <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a> + </div> + <div class="apache_ref_mobile"> + <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a> + </div> + <div class="apache_ref_left"> + <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a> + </div> + <div class="apache_ref_left_mobile"> + <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a> + </div> + + <!-- Header --> + <header id="header" class="alt"> + <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div> + <h1 class="hidden">James Enterprise Mail Server</h1> + <h2>Emails at the heart of your business logic</h2> + </header> + + <!-- Main --> + <div id="main"> + + <!-- Introduction --> + <section id="intro" class="main special"> + <div class=""> + <div class="content align-left"> + <header class="major"> + <h1><b>Setting up SPF</b></h1> + </header> + + <p> + You just finished installing a <a href="imap-server.html">James IMAP server</a> and wonder how to + gain trust for it? + </p> + + <p> + The Sender Policy Framework (SPF) is an open standard specifying a technical method to prevent + sender address forgery, might help you to do this. + </p> + + <p> + More precisely, SPF protects the envelope sender address, which is used for the delivery of messages. + It allows the owner of a domain to specify their mail sending policy, e.g. which mail servers they + use to send emails from their domain. + </p> + + <p> + To correctly configure SPF for your domain, you need to answer the following questions: + </p> + + <ul> + <li><b>From what server or servers will email from my domain originate?</b> In our case, we only + want our James Server to be able to send emails from our domain.</li> + <li><b>How do you want illegitimate email to be handled?</b> <code>-all</code> is an SPF fail and + usually means dropping such emails, whereas <code>~all</code> is an SPF softfail and traditionally + means accepting but marking them.</li> + </ul> + + <p> + Therefore, we add the following DNS records to our DNS zone file: + </p> + + <pre><code>@ IN TXT âv=spf1 +a:james.test-domain.com -allâ +@ IN SPF âv=spf1 +a:james.test-domain.com -allâ</code></pre> + + <p>That way other mail servers knows only <i>james.test-domain.com</i> can send mails for <i>test-domain.com</i>.</p> + + + <header class="major"> + <h1><b>Verifying SPF for incoming emails</b></h1> + </header> + + <p> + Now we will see how to verify SPF records of incoming emails. For this we can customize mail processing, + and specify actions upon SPF record validity. For introducing these components, James relies on the + <a href="https://james.apache.org/jspf/">JSPF</a>library. + </p> + + <p>We just need to edit the <code>mailetcontainer.xml</code> configuration file as follow:</p> + + <p>We are going to create a new processor called <b>SPFProcessor</b>. It will handle emails after + the <b>root</b> processor but before the <b>transport</b> processor. Moreover, we do not need to + perform a SPF check or take a decision if the sender is authenticated or is a local user, because + we already trust him. + + In all other cases, we add a SPF header using the <b>SPF</b> mailet. Then we need to take a decision + about incoming emails. We use the <b>HasMailAttributeWithValue</b> matcher which has seven possible + values to handle in the case of SPF: <b>permerror</b>, <b>temperror</b>, <b>none</b>, <b>pass</b>, + <b>neutral</b>, <b>fail</b> and <b>softfail</b>. What action you choose for each of these values + depends on what you want to do. In our case, we redirect SPF errors and fails to the <b>error</b> + processor, whereas all other cases lead directly to the <b>transport</b> processor for further + normal processing. We are rather tolerant since we authorize <b>softfails</b>.</p> + + <p>For example:</p> + + <pre><code>[...] + +<processors> + <processor state="root" enableJmx="true"> + <mailet match="All" class="PostmasterAlias"/> + <mailet match="RelayLimit=30" class="Null"/> + <mailet match="All" class="ToProcessor"> + <processor>SPFProcessor</processor> + </mailet> + </processor> + + <processor state="error" enableJmx="true"> + [...] + </processor> + + <processor state="SPFProcessor"> + <mailet match="SenderIsLocal" class="ToProcessor"> + <processor>transport</processor> + </mailet> + <mailet match="SMTPAuthSuccessful" class="ToProcessor"> + <processor>transport</processor> + </mailet> + <mailet match="All" class="SPF"> + <addHeader>true</addHeader> + </mailet> + <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, permerror" class="ToProcessor"> + <processor>error</processor> + </mailet> + <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, temperror" class="ToProcessor"> + <processor>error</processor> + </mailet> + <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, none" class="ToProcessor"> + <processor>transport</processor> + </mailet> + <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, pass" class="ToProcessor"> + <processor>transport</processor> + </mailet> + <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, neutral" class="ToProcessor"> + <processor>transport</processor> + </mailet> + <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, fail" class="ToProcessor"> + <processor>error</processor> + </mailet> + <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, softfail" class="ToProcessor"> + <processor>transport</processor> + </mailet> + <mailet match="All" class="LogMessage"> + <headers>true</headers> + <body>false</body> + <comment>Unknown SPF result</comment> + </mailet> + </processor> + +[...]</code></pre> + + </div> + <footer class="major"> + <ul class="actions align-center"> + <li><a href="index.html" class="button">go back to other how-tos</a></li> + </ul> + </footer> + </div> + </section> + + </div> + <footer id="footer" class="major"> + <section> + <h2>James</h2> + <ul class="no-padding"> + <li class="no-padding"><a href="https://james.apache.org/#intro" class="active">About</a></li> + <li class="no-padding"><a href="https://james.apache.org/#first">Get Started</a></li> + <li class="no-padding"><a href="https://james.apache.org/#posts">Last Posts</a></li> + <li class="no-padding"><a href="https://james.apache.org/#second">Community</a></li> + <li class="no-padding"><a href="https://james.apache.org/#third">Contribute</a></li> + <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li> + </ul> + </section> + <section> + <h2>Connect</h2> + <ul class="icons"> + <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li> + <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li> + <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li> + <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li> + <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li> + <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li> + </ul> + </section> + <section class="legal-section"> + <h2>Copyright</h2> + Apache James and related projects are trademarks of the Apache Software Foundation.<br/> + <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/> + <a href="https://www.apache.org/licenses/">License</a><br/> + <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/> + <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/> + Design: <a href="https://html5up.net">HTML5 UP</a><br/> + Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design + </section> + </footer> +</div> + +<!-- Scripts --> +<script src="assets/js/jquery.min.js"></script> +<script src="assets/js/jquery.scrollex.min.js"></script> +<script src="assets/js/jquery.scrolly.min.js"></script> +<script src="assets/js/skel.min.js"></script> +<script src="assets/js/util.js"></script> +<script src="assets/js/lightbox.js"></script> +<script src="assets/js/github-fetch.js"></script> +<script src="assets/js/lity.min.js"></script> +<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]--> +<script src="assets/js/main.js"></script> + + +</body> +</html> http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/images/guice-jpa-architecture-overview.png ---------------------------------------------------------------------- diff --git a/content/images/guice-jpa-architecture-overview.png b/content/images/guice-jpa-architecture-overview.png new file mode 100644 index 0000000..d479ef0 Binary files /dev/null and b/content/images/guice-jpa-architecture-overview.png differ http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/index.html ---------------------------------------------------------------------- diff --git a/content/index.html b/content/index.html index 53f57ed..2a9662d 100644 --- a/content/index.html +++ b/content/index.html @@ -114,6 +114,9 @@ <a href="images/james-general-architecture.png" data-lightbox="james-schema" data-title="James General architecture" alt="James General architecture" class="james-schema" ><span class="fa fa-sitemap"></span>james general architecture<span class="fa fa-long-arrow-right"></span></a> <a href="images/james-smtp-relay.png" data-lightbox="james-schema" data-title="James SMTP relay" alt="James SMTP relay" class="james-schema"><span class="fa fa-sitemap"></span>using james as smtp relay<span class="fa fa-long-arrow-right"></span></a> <a href="images/james-imap-server.png" data-lightbox="james-schema" data-title="James IMAP server" alt="James IMAP server" class="james-schema"><span class="fa fa-sitemap"></span>using james as an imap server<span class="fa fa-long-arrow-right"></span></a><br/><br/> + + <p>Available how-tos for James features are detailed <a href="howTo">here</a>.</p> + <h2 class="big-h2"><span class="fa fa-wrench"></span> <span>James is a <b>living Open Source project</b> (all developments and implementations are based on open technical standards), any function which is not already available from <b>can be developed!</b></span></h2> </div> </div> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
