| <!-- saved from url=(0022)http://internet.e-mail --> |
| <html> |
| <head> |
| <meta http-equiv="content-type" content=""> |
| <title>Mail transport</title> |
| </head> |
| |
| <body lang="en"> |
| <h1>Mail Transport Configuration</h1> |
| |
| <p>This document provides the guidelines on how to configure Axis2 in order |
| to get the mail transport working.</p> |
| |
| <p><i>Send your feedback or questions to: <a |
| href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix |
| subject with [Axis2]. To subscribe to mailing list see <a |
| href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p> |
| |
| <h2>Content</h2> |
| <ul> |
| <li><a href="#intro">Introduction</a></li> |
| <li><a href="#sender">Transport Sender</a></li> |
| <li><a href="#receiver">Transport Receiver</a></li> |
| <li><a href="#server">Using Mail Transport in the Server Side</a></li> |
| <li><a href="#james">Configure James as SMTP and POP Server</a></li> |
| <li><a href="#included">Using the Included Mail Server</a></li> |
| </ul> |
| <a name="intro"></a> |
| |
| <h2>Introduction</h2> |
| |
| <p>The inner workings of the mail transport has been divided into two parts, the transport |
| sender for smtp and the transport listener for pop3. The transport listener will listen to a particular email address periodically. When an email comes in it will be tunneled into an Axis2 |
| engine. On the other hand mail transport sender sends emails to a mail server for a particular email address.</p> |
| |
| <p>Mail transport can be used against a generic mail server or it can be used |
| like a mailet. The simple mailet provided with Axis2 will direct any message |
| that is coming to a particular address into the Axis engine. The engine will |
| process the message and will use the Transport sender to send the reply.</p> |
| |
| <p>The mail transports has been written with the use of Sun's JavaMail and Activation jars. These should be available in your classpath to get the mail transport work.</p> |
| |
| <a name="sender"></a> |
| |
| <h2>Transport Sender</h2> |
| |
| <p>You need to have a mail account to activate the mail functionality. This |
| can either be a generic mail server or you can start up a James mail server, which will be available <a href="http://james.apache.org/">here</a>.</p> |
| |
| <p>JavaMail sets its properties to a Properties object. In Axis2, this has been mapped to a Parameter object. Mapping has been done as follows,</p> |
| |
| <ul> |
| <li>Every JavaMail property can be set to @name of the <parameter/>. Thus, SSL connection is mapped the way it is done in JavaMail</li> |
| <li>Few properties, such as password etc are set to @name with the prefix "transport"</li> |
| </ul> |
| |
| |
| <p>For a non-SSL connection, as an example,mail transport sender can be activated by adding following entry to the axis2.xml file.</p> |
| |
| <source><pre> <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender"> |
| <parameter name="mail.smtp.host" locked="false">localhost</parameter> |
| <parameter name="mail.smtp.user" locked="false">mary</parameter> |
| <parameter name="transport.mail.smtp.password" locked="false">mary</parameter> |
| </transportSender> |
| </pre> |
| </source> |
| |
| <p>In runtime tuning a client to set mail transport as easy as follows,</p> |
| <source> |
| <pre> |
| ... |
| |
| Options options = new Options(); |
| HttpTransportProperties.MailProperties mailProps |
| = new HttpTransportProperties.MailProperties(); |
| mailProps.addProperty("mail.smtp.host","localhost"); |
| mailProps.addProperty("mail.smtp.user","mary"); |
| mailProps.setPassword("mary"); |
| |
| options.setProperty(HTTPConstants.MAIL_SMTP,mailProps); |
| |
| ... |
| </pre> |
| </source> |
| |
| Thus, a user familiar with setting up a SSL connection, he should easily do it with the MailProperties object. For Ex: tuning the sender to talk to gmail account. This configuration should also be done with <parameter/> in Axis2.xml. |
| |
| <source> |
| <pre> |
| ... |
| HttpTransportProperties.MailProperties props = |
| new HttpTransportProperties.MailProperties(); |
| props.put("mail.smtp.user", "address@gmail.com"); |
| props.put("mail.smtp.host", "smtp.gmail.com"); |
| props.put("mail.smtp.port", "465"); |
| props.put("mail.smtp.starttls.enable","true"); |
| props.put("mail.smtp.auth", "true"); |
| //props.put("mail.smtp.debug", "true"); // if the user wants |
| props.put("mail.smtp.socketFactory.port", "465"); |
| props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); |
| props.put("mail.smtp.socketFactory.fallback", "false"); |
| props.setPassword("password"); |
| |
| ... |
| </pre> |
| </source> |
| |
| |
| <a name="receiver"></a> |
| |
| <h2>Transport Receiver</h2> |
| |
| <p>For a non-SSL connection,as an example,mail Listener can be activated by adding the following entry to the |
| axis2.xml file.</p> |
| <source><pre> <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener"> |
| <parameter name="mail.pop3.host" locked="false">localhost</parameter> |
| <parameter name="mail.pop3.user" locked="false">bob</parameter> |
| <parameter name="transport.mail.pop3.password" locked="false">bob</parameter> |
| <parameter name="transport.mail.replyToAddress" locked="false">bob@localhost</parameter> |
| </transportReceiver> |
| </pre> |
| </source> |
| |
| <p><i>Note:</i> The @name="transport.mail.replyToAddress" is an important parameter. It supply the Endpoint reference to the listener.</p> |
| |
| <p>For an advanced user, this can be set to a SSL connection. As an example, lets use this transport listener to pop from a specified gmail account.</p> |
| |
| <source> |
| <pre> |
| <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener"> |
| <parameter name="mail.pop3.host" locked="false">pop.gmail.com</parameter> |
| <parameter name="mail.pop3.user" locked="false">address@gmail.com</parameter> |
| <parameter name="mail.pop3.socketFactory.class" locked="false">javax.net.ssl.SSLSocketFactory</parameter> |
| <parameter name="mail.pop3.socketFactory.fallback" locked="false">false</parameter> |
| <parameter name="mail.pop3.port" locked="false">995</parameter> |
| <parameter name="mail.pop3.socketFactory.port" locked="false">995</parameter> |
| <parameter name="transport.mail.pop3.password" locked="false">password</parameter> |
| <parameter name="transport.mail.replyToAddress" locked="false">address@gmail.com</parameter> |
| </transportReceiver> |
| |
| </pre> |
| </source> |
| |
| <a name="server"></a> |
| |
| <h2>Using Mail Transport in the Server Side</h2> |
| |
| <p>If the Mail Listener is need to be started as a standalone mail listener, it can be done |
| with following command with the all the axis2 jars and the mail dependency |
| jars in the classpath.</p> |
| <source><pre>java org.apache.axis2.transport.mail.SimpleMailListener repository-directory</pre> |
| </source><a name="client"></a> |
| |
| <h2>Using Mail Transport in the Client Side</h2> |
| |
| <p>Following code segment shows how to send a one-way (IN-Only MEP) SOAP message using the |
| mail transport, this needs the Transport Sender configured.</p> |
| <source><pre> |
| OMElement payload = .... |
| String targetEPR = "mail:axis2@localhost/axis2/services/Foo"; |
| |
| ConfigurationContext configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo, |
| axis2XML); |
| |
| ServiceClient servicClient = new ServiceClient(configurationContext, null); |
| |
| Options options = new Options(); |
| options.setTo(targetEPR); |
| options.setTransportInProtocol(Constants.TRANSPORT_MAIL); |
| |
| servicClient.setOptions(options); |
| |
| servicClient.sendRobust(payload);</pre> |
| </source><a name="james"></a> |
| |
| <h2>Configure James as SMTP and POP Server</h2> |
| |
| <p>Download the <a href="http://james.apache.org/">Apache James</a> and start |
| James, connect to the James via Telnet for administrator James with the |
| following code</p> |
| <source><pre>$telnet 127.0.0.1 4555 |
| Trying 127.0.0.1... |
| Connected to localhost.localdomain (127.0.0.1). |
| Escape character is '^]'. |
| JAMES Remote Administration Tool 2.2.0 |
| Please enter your login and password |
| Login id: |
| root |
| Password: |
| root |
| Welcome root. HELP for a list of commands</pre> |
| </source> |
| <p>Add users to James</p> |
| <source><pre>adduser axis2-server axis2 |
| User axis2-server added |
| adduser axis2-client axis2 |
| User axis2-client added |
| Connection closed by foreign host.</pre> |
| </source> |
| <p>Now James is up and running with the accounts</p> |
| <a name="included"></a> |
| |
| <h2>Using the Included Mail Server</h2> |
| |
| <p>The inbuilt mail server can be started from the command line using the |
| following piece of code when all the needed jars are in the class path.</p> |
| <source><pre>java org.apache.axis2.transport.mail.server.MailServer</pre> |
| </source> |
| <p>The server itself does not need any configuration or tinkering to work. A |
| ConfigurationContext and the ports to operate on are the only details needed. |
| The server will store the mails in memory against the recipient till the |
| recipient pops it from the server. To facilitate the use in *nix environments |
| as a non root user the pop and smtp ports used by default config/test cases |
| are (1024 + 25) and (1024 + 110).</p> |
| <hr> |
| </body> |
| </html> |