我实际上面临着与客户的自定义应用程序的整合问题。
Sendmail真的很容易configuration和理解,但是我需要的实现起来相当复杂。
设备将读取收到的电子邮件,处理它们并将一些数据存储在他的数据库中。 要做到这一点,客户问我是否有可能sendmail,当收到一封电子邮件,没有发生在用户configuration文件下的单个文件的电子邮件,但存储在每个处理的电子邮件的电子邮件文件的specidifiedpath。
有可能做到这一点,或有任何亲切的想法来欺骗它,让它工作?
谢谢
S.
听起来像电子邮件存储在Mbox格式,这是一个接一个的每个电子邮件只是一个单一的文件。 这种格式现在很less使用,因为在现代使用中它会变得非常快速,变得麻烦。
最简单的事情是将Sendmailconfiguration为使用Procmail进行本地交付,并将Procmailconfiguration为以Maildir格式存储消息。
确切的过程将取决于操作系统,但它应该只是安装Procmail的情况下,然后
1)将Sendmailconfiguration为使用Procmail,大多数情况下只需.mc添加到.mcconfiguration文件并重新.mcconfiguration。
FEATURE(local_procmail) MAILER(procmail)
2)创build或更新procmailrcconfiguration文件以Maildir格式存储消息。 (由存储path末尾的/ )
DEFAULT=$HOME/mail/
mail目录可能需要存在,并有cur , new和tmp子文件夹。 这些应该由用户拥有并具有模式700权限。
寻找有关您的操作系统的Sendmail / Procmail / Maildir的信息可能会帮助您find一些指南或文档。
sendmail使用其他程序将消息传递给本地收件人。 在Linux-es上,通常是procmail 。 Procmail可以将邮件传递给maildir或mh文件夹。 两者似乎大致是你想要的。
以root身份使用下面的命令来检查sendmail使用哪个程序作为本地邮件程序:
echo '=M' | sendmail -bt | grep local
要么
说服客户使用IMAP或POP3访问邮箱。 UID(唯一标识符)可以以更便携的方式传递客户想要的东西。
让应用程序从拾取位置读取文件可能是一个糟糕的devise理念。 编写电子邮件不是一个primefaces操作,您不希望应用程序选取不完整的消息。
(Maildir格式通过将传入消息写入tmp/目录来防止这种情况发生,而这个消息并不向邮件客户端公开,只有当消息文件成功提交到磁盘后,消息文件才会被重命名/移动到new/这是一个primefaces操作。)
正如@AnFi所build议的 ,应用程序接收电子邮件的通用解决scheme是让应用程序像邮件客户端一样工作,让它轮询IMAP / POP3邮箱并跳过/删除已成功处理的邮件。
类似的generics是让应用程序从STDIN接收电子邮件消息。
fetchmail <other-options> --mda /path/to/application "|/path/to/application" ~/.forward文件 mailboxname: "|/path/to/application"的/etc/aliases文件mailboxname: "|/path/to/application" 对于sendmail,后者通常需要通过将/ path / to / application复制到/ etc / smrsh来configurationsendmail受限shell( smrsh )