def valid?(options={})
      @error = nil
      unless self.local.valid?
        return set_error self.local.error
      end
      unless self.host.valid?
        return set_error self.host.error_message
      end
      if @config[:address_size] && !@config[:address_size].include?(self.to_s.size)
        return set_error :exceeds_size
      end
      if @config[:address_validation].is_a?(Proc)
        unless @config[:address_validation].call(self.to_s)
          return set_error :not_allowed
        end
      else
        return false unless self.local.valid?
        return false unless self.host.valid?
      end
      if @config[:address_validation] == :smtp

      end
      true
    end
def valid?(options={})
      @error = nil
      unless self.local.valid?
        return set_error self.local.error
      end
      unless self.host.valid?
        return set_error self.host.error_message
      end
      if @config[:address_size] && !@config[:address_size].include?(self.to_s.size)
        return set_error :exceeds_size
      end
      if @config[:address_validation].is_a?(Proc)
        unless @config[:address_validation].call(self.to_s)
          return set_error :not_allowed
        end
      else
        return false unless self.local.valid?
        return false unless self.host.valid?
      end
      if @config[:address_validation] == :smtp

      end
      true
    end
---------------------------------------------------------------------------
 Validation
---------------------------------------------------------------------------
 Returns true if this address is considered valid according to the format
 configured for its provider, It test the normalized form.