No ProFTPD, não há uma maneira direta de especificar um caractere curinga para um nome de usuário. No entanto, você pode usar mod_sql
para autenticar seus usuários e personalizar as consultas usadas para obter informações do usuário.
Exemplo de consultas personalizadas retiradas do ProFTPD docs :
SQLAuthenticate users groups usersetfast
SQLUserInfo custom:/get-user-by-name/get-user-by-id/get-user-names/get-all-users
SQLNamedQuery get-user-by-name SELECT "userid, passwd, uid, gid, homedir, shell FROM users WHERE userid = '%U'"
SQLNamedQuery get-user-by-id SELECT "userid, passwd, uid, gid, homedir, shell FROM users WHERE uid = %{0}"
SQLNamedQuery get-user-names SELECT "userid FROM users"
SQLNamedQuery get-all-users SELECT "userid, passwd, uid, gid, homedir, shell FROM users"
No seu caso, a consulta get-user-by-name
poderia ser algo como:
SQLNamedQuery get-user-by-name SELECT "'%U', passwd, uid, gid, homedir, shell FROM users WHERE userid = SUBSTRING_INDEX('%U', '_', 1) AND SUBSTRING_INDEX('%U', '_', -1) RLIKE '_[0-9]{15}'"
Por favor, note que esta não é uma solução testada. Apenas uma ideia de uma maneira possível de como isso poderia ser alcançado.