在cpanel主机上构建webmail应用程序:如何使用实际的电子邮件服务?

时间:2017-02-13 22:43:55

标签: node.js email architecture cpanel lamp

我正在为最终用户构建类似于Gmail的 Webmail SPA 。此应用程序将托管在cPanel共享主机(LAMP堆栈)上。 最终用户没有cpanel电子邮件访问。我的应用程序将成为这些电子邮件帐户的访问门户。

如果重要,我最好是具有LAMP经验的节点开发人员,所以我愿意接受任何广泛的建议。请注意,通常我只是使用smtp弹出一些东西。我会直接做这个Imap吗?我只想在架构层面上了解我需要访问哪些服务,或者寻找可能是某个示例方向的一点。

也许能够描述我如何实现它的线框,流程图或句子就足够了。我可以找到技术,我只需要一个路线图。

这是RHEL6

$ uname -a
Linux 2.6.32-604.30.3.lve1.3.63.el6.x86_64 #1 SMP Sun Sep 27 06:34:10 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

有些问题基于我能够思考这个问题的唯一方法:

什么协议通常访问电子邮件(用户?)我会得到一些东西,可能是系统环境变量的内部邮件命令访问,还是PATH?我会ping一个用户列表,我的意思是应用程序需要连接到邮件服务器的哪些信息,以及我从中得到什么协议?我认为这是我的故障。

我想第一件事,就是在帖子期间,它认证,auth之后会发生什么,什么协议,我将在哪里/我将要做出什么决定,以及如何在之后拉入电子邮件列表?我猜这只是一个IMAP请求。这就是我需要的吗?例如php mail()nodemailer

此外,我似乎无法提出适当的术语来获得任何有意义的谷歌搜索结果,我愿意接受搜索查询帮助,不知道我还在寻找什么技术。

修改

在一些研究中,我发现了以下内容;

一些最终会产生一些结果的搜索词

  • webmail interfacing php (或节点)
  • webmail single page application node (或php)

看起来这可能是节点应用连接到imap的方式的一个示例

如果有人可以帮助我提出这个问题,那就太棒了。

1 个答案:

答案 0 :(得分:-1)

关于此的一些答案:

滚动您自己的,共享主机上的网络邮件,cPanel API,curlfopen和第三方电子邮件应用程序apis将成为起点。

cPanel可能不完全支持这一点,但是他们确实有api,UAPI最有可能出现在某些基本情景中。 https://documentation.cpanel.net/display/SDK/UAPI+Functions+-+Email%3A%3Alist_pops

但是,Afterligic的WebMail Lite包含一个看起来很有前景的解决方案,其中包含PHPRESTJavaScript APIhttp://www.afterlogic.org/docs/webmail-lite/integration-and-development

阅读邮件的PHP示例看起来可能就是这里的

<?php

    include_once __DIR__.'/../libraries/afterlogic/api.php';

    if (class_exists('CApi') && CApi::IsValid())
    {
        // data for logging into account
        $sEmail = 'user@domain.com';
        $sPassword = 'PassWord';

        $sFolder = 'INBOX';
        $iOffset = 0;
        $iLimit = 5;

        $oCollection = null;

        try
        {
            $oApiIntegratorManager = CApi::Manager('integrator');

            $oAccount = $oApiIntegratorManager->LoginToAccount($sEmail, $sPassword);
            if ($oAccount)
            {
                $oApiMailManager = CApi::Manager('mail');
                $oCollection =  $oApiMailManager->getMessageList($oAccount, $sFolder, $iOffset, $iLimit);

                if ($oCollection)
                {

                    echo '<b>'.$oAccount->Email.':</b><br />';
                    echo '&lt;pre&gt;';
                    echo 'Folder:   '.$sFolder."\n";
                    echo 'Count:    '.$oCollection->MessageCount."\n"; // $oCollection->MessageResultCount
                    echo 'Unread:   '.$oCollection->MessageUnseenCount."\n";
                    echo 'List:   '."\n";

                    $oCollection->ForeachList(function ($oMessage) {
                        $oFrom = $oMessage->From();
                        echo "\t".htmlentities($oMessage->Uid().') '.$oMessage->Subject().($oFrom ? ' ('.$oFrom->ToString().')' : ''))."\n";
                    });

                    echo '&lt;/pre&gt;';
                }
                else
                {
                    echo $oApiMailManager->GetLastErrorMessage();
                }
            }
            else
            {
                echo $oApiIntegratorManager->GetLastErrorMessage();
            }
        }
        catch (Exception $oException)
        {
            echo $oException->getMessage();
        }
    }
    else
    {
        echo 'AfterLogic API isn\'t available';
    }

并且a 关于滚动自己的一些其他想法: 下面是一篇文章,阐述了如何查看帐户,使用php How to create an Email Account in Cpanel via PHP?

一个要列出 How to access list of email accounts with cPanel API?

构建cpanel类是为了提供一种创建和转发的方法,并且可能是解决方案开始时的最佳示例。 http://sajjadhossain.com/tag/cpanel-class/资源来自此处,对此主题进行了大量测试http://www.zubrag.com/scripts/cpanel-create-email-account.php

转发电子邮件,以防有时使用其他临时帐户 https://www.a2hosting.com/kb/cpanel/cpanel-mail-features/forwarding-incoming-e-mail-messages-to-a-script-file

然后可以选择鼠标邮件或cpanel支持的其他两个邮件应用程序:可能将其中一个转为门户网站。这是一种授权松鼠邮件的方法,例如: http://squirrelmail.org/plugins_category.php?category_id=6