Filter invalid email addresses using shell script:

  • Check for valid domain names
cat email_addr.txt | cut -d "@" -f 2 | sort -u| xargs -I {} host -t MX '{}' | grep "not found";
  • Check for email address RFC compliance
cat email_addr.txt | egrep "^[a-Z0-9,\!\#\$\%\&'\\*\+/=\?\^\\_\`\{\|\}\~\-]+(\.[a-Z0-9,\!\#\$\%\&'\\*\+/=\?\^\_\`\{\|\}\~\-]+)\*@[a-Z0-9-]+(\.[a-Z0-9-]+)\*\.([a-Z]{2,})$"