Table of Contents

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 <success>, <new ExtData or Error Text>

GetMessagesToMoveToExternal

function GetMessagesToMoveToExternal()

returns <table of MsgDataIDs>

UploadToExternal

function UploadToExternal(MsgDataId, SourceFileName)

returns <success>, <new ExtData or Error Text>

DeleteFromExternal

function DeleteFromExternal(MsgDataId)

returns <success>, <new ExtData or Error Text>

GetMessagesToMoveFromExternal

function GetMessagesToMoveFromExternal()

returns <table of MsgDataIDs>

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 <new delay in milliseconds>

Example

url = "https://s3.eu-central-1.wasabisys.com";
bucket = "<bucket name>";
accesskey = "<access key>";
secretkey = "<secret key>";
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