The only thing I see in your code that might be an issue is that you should have === false as == will match 0, but this would only happen if they entered @domain.com without an address.
if( is_string($value) && strpos($value, '@domain.com') === false ) {
What type of field is this? I’m assuming it’s a text field, what I mean is, is it a sub field of another field like a group field? If it is try using the field key instead of the field name.