Each file have it's own index and file is only accessible by the user who uploaded the file or the admin. User then select the files that they own to compose the message to send. The message with the link to the file will have a unique hash for the file. Once the message expired, the hash to the file becomes invalid. The file itself have its own expiration date. The user is allow to change the expiration of the file up to the limit that is set by the admin. For example, Sender1 want to send 2 file to Recipient1. Sender1 would compose a message and attache 2 file. The two file is uploaded to the server with hash of sender1file1 and sender1file2. The file have a default expiration of let say 30 days. The message that is sent to the recipient would have the links to the two file of hash sender1file1message1link and sender1file2message2link and message expiration of that less than the file expiration. If Sender1 want to send those same file to Recipient2, Sender1 would select the two file that is still available on the server and send the message. The message that Recipient2 have the links to the two file of hash sender1file1message2link and server1file2message2link. The expiration date of the message to Recipient2 must not exceed the expiration date of the files; Sender1 need to extend the expiration date of the files to send out link with longer expiration date. When the message for Recipient1 expired, the hash for sender1file1message1link and sender1file2message1link also expired. The message for Recipient2 with the hash for sender1file1message2link and sender1file2message2link still exist to download the same file. Hash of the actual file, sender1file1 and sender1file2 can not be use to download the file. It is used as part of internal system to correlate and keep track of owner and messages linking to that file. Sender1(user) can only extend the file expiration by a certain number of days set by the admin. All file expiration date can not exceed the number of days set by the admin. In order word, if the system is setup so that all file will expired in 180 day. On day 181, those files will be deleted. On day 180, user/owner of the file can extend the expiration date of that file by at most 179 day.