А в чём проблема, собственно? Генерить URL? Содержать его валидным в течение определённого времени? Генерите URL как UUID, библиотек полно. Время жизни сообщения -- в базе, со всей сопутствующей обвязкой (кто, кому, чего, в какой момент и когда зачистить). Регулярно удаляйте из базы записи с урлами, у которых истекло время. Это скрипт в три строчки, можно даже на bash.