james中的fetchmail如何配置才能正常工作?

    这段时间在玩james,由于自己E文水平不行,加上文档又少,遇到了不少问题。现在有一个问题搞了好多天都没搞定,现在把它发出来,请求大家帮忙!

 

    我现在配置的james服务器可以给126.com的服务器发邮件,也可以收取james的内部邮件。

 

   现在需要把james作为本地的邮件服务器,通过它来收取外部邮件服务器(如163.com)的邮件。但是不管我怎么配置都收不到外部的邮件。

 

   james版本是3.X的(就是现在还没有发布的版本,支持spring的),其中的fetchmail的配置文件james-fetchmail.xml如下:

 

 

    <fetchmail enabled="true">  
        <fetch name="163.com">
            <accounts>
                <account user="lude707" password="123456" recipient="[email protected]" ignorercpt-header="false"/>
            </accounts>
            <host>pop.163.com</host>
            <interval>10000</interval>
            <javaMailProviderName>pop3</javaMailProviderName>
            <javaMailFolderName>INBOX</javaMailFolderName>
            <javaMailProperties>
                <property name="mail.pop3.connectiontimeout" value="80000"/>             
                <property name="mail.pop3.timeout" value="80000"/>               
            </javaMailProperties>           
            <fetchall>true</fetchall>
            <recursesubfolders>false</recursesubfolders>      
            <fetched leaveonserver="false" markseen="true"/>     
            <remotereceivedheader index="1" reject="true" leaveonserver="true" markseen="false"/>    
            <maxmessagesize limit="0" reject="false" leaveonserver="true" markseen="false"/>         
            <undeliverable leaveonserver="true" markseen="false"/>       
            <recipientnotfound defer="true" reject="true" leaveonserver="true" markseen="false"/>                                                               
            <blacklist reject="true" leaveonserver="true" markseen="false"> [email protected], [email protected] </blacklist>                                        
            <userundefined reject="true" leaveonserver="true" markseen="false" />   
            <remoterecipient reject="true" leaveonserver="true" markseen="false" />
        </fetch>
    </fetchmail>  

 

 

 

大家帮我看一下,我的配置错在那里,谢谢!

(第一次问问题,不知道这么发有没有人看到)

 

 

 

 

 

 

晕,这么多天了才浏览了五次,也午大部分都是我看的。
这个问题我已经搞得差不多算是清楚了,主要是这个版本是测试版,有不少东西都还没有搞好,这个是系统没有对DefaultTimeScheduler类的实例调用start()方法,我现在对它做了点改进:
    private boolean isRunning = false;
   
    public void start()
        throws Exception
    {
     
     if(false == isRunning)
     {
            //this should suck threads from a named pool
      System.out.println("DefaultTimeScheduler is starting now!");
      getLogger().info("DefaultTimeScheduler is starting now!");
      
            getThreadManager().getDefaultThreadPool().execute( this ); 
            isRunning = true;
     }
     else
     {
      System.out.println("DefaultTimeScheduler has bean started now!");
      getLogger().info("DefaultTimeScheduler has bean started now!");
     }
     
     

    }


并且在addTrigger()方法里对start()进行调用,这样问题就暂时解决了。
不过这只是一时的解决办法,最终的解决办法还得等apache来做。
因为start()是Startable接口的方法,根据系统的定义,这个应该是DefaultTimeScheduler类实例化后就执行的,结果我对它进行测试是没有执行的。

但是看DefaultComponentFactory类的incarnation()方法的代码时,感觉它应该是执行了的。

            //incarnation()方法部分代码
            if( Startable.class.isAssignableFrom( clazz ) )
            {
                getLogger().debug( "applying startup" );
                if( m_secure )
                {
                    AccessController.doPrivileged(
                      new PrivilegedExceptionAction()
                      {
                          public Object run() throws Exception
                          {
                             ((Startable)instance).start();
                             return null;
                          }
                      },
                      m_model.getAccessControlContext() );
                }
                else
                {
                    ContainerUtil.start( instance );
                }
                getLogger().debug( "component startup completed" );
            }

 

 

 

 

很想验证一把,但最近太忙了,以后再搞吧。

 

 

 

 

你可能感兴趣的:(apache,spring,工作,bean,浏览器)