Já existe código para criar usuários “staged” se você permitir a criação de tópicos por e-mail. Eles têm um nome de usuário aleatório e cada um está associado a um endereço de e-mail. Você pode “reivindicar” a conta fazendo login e validando esse endereço de e-mail.
Veja
Talvez construir sobre isso ajude?