Why distinguish PlainAuth from other auth?  It doesn't seem worthwhile to include m.UserName, m.Password, m.Server just to construct this -- just require the caller to provide a m.Auth, which they can do equivalently easily.