======External Message Store Scripting====== Added in VPOP3 Enterprise v9.1 This allows some messages to be stored in an external message store somewhere, accessed via S3, SFTP or similar ====DownloadFromExternal==== function DownloadFromExternal(MsgDataId, ExtData, TargetFileName) returns , ====GetMessagesToMoveToExternal==== function GetMessagesToMoveToExternal() returns ====UploadToExternal==== function UploadToExternal(MsgDataId, SourceFileName) returns , ====DeleteFromExternal==== function DeleteFromExternal(MsgDataId) returns , ====GetMessagesToMoveFromExternal==== function GetMessagesToMoveFromExternal() returns
====GetTidyLocalHours==== function GetTidyLocalHours(MaxAgeHours, MaxTidyCount) returns MaxAgeHours, MaxTidyCount Tells VPOP3 how long locally cached message files should be kept, and how many should be deleted per iteration around the management loop ====GetNextIterationDelay==== function GetNextIterationDelay(ActionResults, Delay) returns ====Example==== url = "https://s3.eu-central-1.wasabisys.com"; bucket = ""; accesskey = ""; secretkey = ""; prefix = "extstore/"; function GetMessagesToMoveToExternal() local x = VPOP3.PostgresQuery("SELECT msgdataid FROM messages.msgdata WHERE NOT extmsg ORDER by msgdataid limit 1;") if x.Rows > 0 then return {x[1]["msgdataid"]} else return {} end end function DownloadFromExternal(msgid, data, filename) ret,retstr = VPOP3Net.S3Get(url, bucket, accesskey, secretkey, prefix .. msgid, filename); if ret == 0 then return true, data else return false, retstr end end function UploadToExternal(msgid, filename) ret,retstr = VPOP3Net.S3Put(url, bucket, accesskey, secretkey, prefix .. msgid, filename); if ret == 0 then return true, "abc" else return false, retstr end end function DeleteFromExternal(msgid) ret,retstr = VPOP3Net.S3Delete(url, bucket, accesskey, secretkey, prefix .. msgid); if ret == 0 then return true, "abc" else return false, retstr end end function GetTidyLocalHours(h, c) return 5, 1 end function GetNextIterationDelay(r, d) return 10000; end