diff --git a/actions_resource.go b/actions_resource.go
index 408c10cd0c29e4a56d8265e67440e67823ac8262..a9ee7f922a280cbd9bf5a6022089a677f791c640 100644
--- a/actions_resource.go
+++ b/actions_resource.go
@@ -134,6 +134,15 @@ type AddEmailAliasRequest struct {
 
 // Validate the request.
 func (r *AddEmailAliasRequest) Validate(rctx *RequestContext) error {
+	if rctx.Resource.ID.Type() != ResourceTypeEmail {
+		return errors.New("this operation only works on email resources")
+	}
+
+	// Allow at most 5 aliases.
+	if len(rctx.Resource.Email.Aliases) >= maxEmailAliases {
+		return errors.New("too many aliases")
+	}
+
 	if err := rctx.fieldValidators.email(rctx.Context, r.Addr); err != nil {
 		return newValidationError(nil, "addr", err.Error())
 	}
@@ -144,15 +153,6 @@ const maxEmailAliases = 5
 
 // Serve the request.
 func (r *AddEmailAliasRequest) Serve(rctx *RequestContext) (interface{}, error) {
-	if rctx.Resource.ID.Type() != ResourceTypeEmail {
-		return nil, errors.New("this operation only works on email resources")
-	}
-
-	// Allow at most 5 aliases.
-	if len(rctx.Resource.Email.Aliases) >= maxEmailAliases {
-		return nil, errors.New("too many aliases")
-	}
-
 	rctx.Resource.Email.Aliases = append(rctx.Resource.Email.Aliases, r.Addr)
 	if err := rctx.TX.UpdateResource(rctx.Context, rctx.Resource); err != nil {
 		return nil, err
@@ -168,12 +168,16 @@ type DeleteEmailAliasRequest struct {
 	Addr string `json:"addr"`
 }
 
-// Serve the request.
-func (r *DeleteEmailAliasRequest) Serve(rctx *RequestContext) (interface{}, error) {
+// Validate the request.
+func (r *DeleteEmailAliasRequest) Validate(rctx *RequestContext) error {
 	if rctx.Resource.ID.Type() != ResourceTypeEmail {
-		return nil, errors.New("this operation only works on email resources")
+		return errors.New("this operation only works on email resources")
 	}
+	return nil
+}
 
+// Serve the request.
+func (r *DeleteEmailAliasRequest) Serve(rctx *RequestContext) (interface{}, error) {
 	var aliases []string
 	for _, a := range rctx.Resource.Email.Aliases {
 		if a != r.Addr {