Acho que você pode manter sua estrutura de tabela atual para o conteúdo da mensagem. Em vez de adicionar colunas separadas ou sinalizadores excluídos, seria melhor ter uma tabela separada para caixas de correio.
Então, sua tabela mbox atual:
id message sentby sentto created
Em seguida, outra tabela para user_mailboxes
id user mailbox message_id
Você teria que fazer três inserções totais ao escrever uma mensagem, uma na tabela de mensagens, para cada usuário na tabela user_mailboxes.
Então seus dados mbox ficam assim:
id message sentby sentto created
1 Hi There UserA UserB 2015-01-26
2 Hello Back UserB UserA 2015-01-26
E os dados user_mailboxes ficariam assim:
id user mailbox message_id
1 UserA Out 1
2 UserB In 1
3 UserB Out 2
4 UserA In 2
Isso permite excluir linhas individuais da tabela user_mailboxes. Isso também permitiria futuros complementos, permitindo enviar mensagens para vários usuários ao mesmo tempo (uma nova linha para cada usuário) e adicionar mais de uma caixa de correio, se necessário (Entrada, Saída, Lixeira, Importante , etc).
Para procurar o e-mail de um usuário para uma caixa de correio específica, basta usar um join
SELECT * FROM user_mailboxes LEFT JOIN mbox ON mbox.id = user_mailboxes.message_id WHERE user_mailboxes.user = "$user" AND user_mailboxes.mailbox = "Out";
Você precisaria de um script de limpeza ao excluir para garantir que não haja mensagens órfãs que não existam na tabela user_mailboxes.