예제 #1
0
        public void OnCommandExecute(object sender, CommandExecuteEventArgs args)
        {
            var type = args.Handler.GetType();
            var actionRequiresAuth      = type.GetCustomAttributes(typeof(RequiresAuthAttribute), false).Any();
            var transactionRequiresAuth = args.Transaction.Settings.RequireAuth;

            if (actionRequiresAuth && transactionRequiresAuth && !args.Transaction.GetProperty <bool>("Authenticated"))
            {
                args.Response = new SMTPResponse(SMTPStatusCode.AuthRequired);
            }
        }
예제 #2
0
        public void OnCommandExecute(object sender, CommandExecuteEventArgs args)
        {
            var type              = args.Handler.GetType();
            var unsecuredAllowed  = type.GetCustomAttributes(typeof(UnsecureAllowedAttribute), false).Any();
            var requireEncryption = args.Transaction.Settings.RequireTLS;
            var isSecured         = args.Transaction.TLSActive;

            if (!unsecuredAllowed && requireEncryption && !isSecured)
            {
                args.Response = new SMTPResponse(SMTPStatusCode.AuthRequired, "Must issue a STARTTLS command first");
            }
        }
예제 #3
0
        public SMTPResponse Execute(SMTPTransaction transaction, string parameters)
        {
            var args = new CommandExecuteEventArgs(transaction, this, parameters);

            if (OnExecute != null)
            {
                OnExecute(this, args);
            }

            if (args.Response != null)
            {
                return(args.Response);
            }

            return(DoExecute(transaction, parameters));
        }