<p>It's <em>an</em> approach, but whether it's the best one depends on the problem.</p>
<p>Exactly how you do that text preprocessing will matter a lot more than what clustering algorithm you use. The mapping from the text to a vector space determines what it <em>means</em> for two emails to be similar. The clustering algorithm just groups the ones that are most similar. (As an aside, I would think that the email <em>text</em> would be a more useful field to cluster on than the domain.)
There are lots of options for mapping arbitrary text onto a single vector. A couple papers to get you started: <a href="https://jmlr.org/papers/volume3/blei03a/blei03a.pdf" rel="nofollow noreferrer">Latent Dirichlet Allocation</a> (the θ vector will be the one you want), <a href="https://arxiv.org/abs/1405.4053" rel="nofollow noreferrer">Paragraph Vectors</a>.</p>
<p>K-Means is a reasonable choice if you know how many clusters you want. When deciding what properties you want your clustering algorithm to have, the <a href="https://scikit-learn.org/stable/modules/clustering.html" rel="nofollow noreferrer">scikit-learn page on clustering</a> is a useful resource. It shows datasets with a variety of shapes, along with the clusters that are extracted from each by the various algorithms.</p>
EMAILS CLUSTERING
<p>I have email data (first_name, last_name, email, username, email_domain), and I want to cluster email  based on its text so it could be cluster similar emails together, it could be cluster similar names together. What I am thinking to do is to apply text preprocessing on email_domain and train a KMeans algorithm. am I on the right way?
Thank you.</p>