Hi, 

if this could be of some help, below is a php function I am
used to work with (It should be easy to port to javascript) that makes
mail address validation and handle this case (RFC2822 compliant) :


<?php 
// check_email_address function 
// Check specified email
address syntax validity 
// Originally from :
http://www.ilovejackdaniels.com/php/email-address-validation/ [1] 
//
Updated by S. BLAISOT on Feb 02 2006 to check DNS MX of the domain 
//
Newer version implemented as a class can be found here :
http://code.google.com/p/php-email-address-validation/ [2]

function
check_email_address($email) { 

 // First, we check that there's one @
symbol, and that the lengths are right 
 if
(!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) { 
 // Email invalid because
wrong number of characters in one section, or wrong number of @ symbols.

 return false; 
 } 

 // Split it into sections to make life easier 

$email_array = explode("@", $email); 
 $local_array = explode(".",
$email_array[0]); 
 for ($i = 0; $i < sizeof($local_array); $i++) { 
 if
(!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~.-]{0,63})|("[^(\|")]{0,62}"))$",
$local_array[$i])) { 
 return false; 
 } 
 } 

 if
(!ereg("^[?[0-9.]+]?$", $email_array[1])) { // Check if domain is IP. If
not, it should be valid domain name 
 $domain_array = explode(".",
$email_array[1]); 
 if (sizeof($domain_array) < 2) { 
 return false; //
Not enough parts to domain 
 } 
 for ($i = 0; $i <
sizeof($domain_array); $i++) { 
 if
(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$",$domain_array[$i]))
{ 
 return false; 
 } 
 } 
 } 

 // DNS check of MX of the specified
domainname 
 if( !checkdnsrr($email_array[1], "MX") ) { 
 if(
!checkdnsrr($email_array[1], "A")) { 
 return false; 
 } 
 } 

 return
true; 
} 
?> 

usage : 
//[...] 
// Validate mail address 

if
(!check_email_address($From)) { 
 echo "Adresse Invalide !n"; 
} else {

 echo "Adresse mail validen"; 
} 

also, I think that email address
validation should not be done by javascript alone as it is client side
and you can not rely on client (javascript can be disable, altered,
bypassed or whatever) resulting in not validatied addresses sent to php
server-side part of the application. 

Don't know how it is in
roundcube, but I think that mail address validation can take place
client-side in javascript for better user experience but should also be
done server-side in php, ensuring outgoing mail from roundcube are at
least syntaxically correct (and limiting XSS vulnerability risks).


regards, 

-- 
Sébastien BLAISOT

Le 2012-08-23 08:06, A.L.E.C a écrit
: 

> On 08/21/2012 06:34 PM, Benny Pedersen wrote:
> 
>>
abuse@[127.0.0.1] is a valid email address, but roundcube says please
provide atleast one email address
> 
> Doesn't work with current version
too. It looks like javascript method
> for address validation doesn't
handle this case. Please, open a ticket
> in bugtracker, so we could fix
this issue in next version.
 

Links:
------
[1]
http://www.ilovejackdaniels.com/php/email-address-validation/
[2]
http://code.google.com/p/php-email-address-validation/
_______________________________________________
Roundcube Development discussion mailing list
[email protected]
http://lists.roundcube.net/mailman/listinfo/dev

Reply via email to