type属性をemailに変更するとか、pattern属性で入力できる文字を指定するとかあるが、どうしてもtype=textにする必要がある場合。

まずpattern属性にすると、pattern属性は form[novalidate] 時のみに機能し、キーボードの種類自体は決定するということはできないため、UI的には変わりない。
また郵便番号は type=numberにすると、ちょっと意味的に違う。

そう言った場合は、inputmode属性を使用することで解決できると知った。

<input type="text" inputmode="email" />

上記のようにすることで、キーボードをEmail用にすることが可能。