@Override
    public void handle(SMTPServiceThread service, String com, String arg) {
        if (!"rcpt".equals(com)) {
            service.writeToClient("503 Error: need Rcpt command");
            return ;
        }
        if (!this.checkArgument(arg)) {
            service.writeToClient("501 Invalid argument");
            return ;
        }

        //check the mail whether is sent to local or not
        if (service.getType() == ServerType.FORSERVER) {
            if (!Manager.isLocalServer(Manager.getMailServer(
                                               this.getMail(arg)))) {
                service.writeToClient("550 Wrong mail address");
                return ;
            }
            if (!Manager.isLocalUser(Manager.getMailUser(this.getMail(arg)))) {
                service.writeToClient("550 User not found");
                return ;
            }
        }
        
        service.getReceiver().getMessage().setTo(this.getMail(arg));

        service.writeToClient("250 Rcpt OK");

        service.getReceiver().setState(new DataState());
    }