diff --git a/include/types/global.h b/include/types/global.h
index 304edf5..0cedc95 100644
--- a/include/types/global.h
+++ b/include/types/global.h
@@ -94,6 +94,9 @@
 
 /* FIXME : this will have to be redefined correctly */
 struct global {
+	int email_alert;
+	char email_to[3][50];
+	char email_from[50];
 	int uid;
 	int gid;
 	int external_check;
diff --git a/src/cfgparse-global.c b/src/cfgparse-global.c
index b117ebc..4e185e2 100644
--- a/src/cfgparse-global.c
+++ b/src/cfgparse-global.c
@@ -26,6 +26,7 @@
  */
 int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
 {
+	int i = 0;
 	int err_code = 0;
 	char *errmsg = NULL;
 
@@ -1172,6 +1173,20 @@
 				env++;
 		}
 	}
+	else if (!strcmp(args[0], "email_alert")) {
+		global.email_alert = 1;
+		if (*(args[1]) == 0) {
+			ha_alert("parsing [%s:%d] : email_alert Expects email address as argument.\n", file, linenum);
+			global.email_alert = 0;
+			err_code |= ERR_ALERT;
+			goto out;
+		}
+		strncpy(global.email_from,args[1],50);
+		for (i=0; i<3; i++) {
+			if (*(args[i+2]) != 0)
+				strncpy(global.email_to[i],args[i+2],50);
+		}
+	}
 	else {
 		struct cfg_kw_list *kwl;
 		int index;
diff --git a/src/log.c b/src/log.c
index 1778be9..7746e9f 100644
--- a/src/log.c
+++ b/src/log.c
@@ -1045,6 +1045,69 @@
 	free(msg);
 }
 
+void make_literal(char const *input, char *output) {
+	// the following two arrays must be maintained in matching order:
+	static char inputs[] = "\a\b\f\n\r\t\v\\\"\'";
+	static char outputs[] = "abfnrtv\\\"\'";
+
+	char *pos;
+
+	for (;*input;input++) {
+		if (NULL!= (pos=strchr(inputs, *input))) {
+			*output++ = '\\';
+			*output++ = outputs[pos-inputs];
+		}
+		else
+			*output++ = *input;
+	}
+	*output = '\0';
+}
+
+void Emaila(const char *fmt, ...)
+{
+	va_list argp;
+	char tmp[256];
+	char buf[500];
+	char alertcmd[1024];
+	int sysreturn;
+	size_t len = 0, len1 = 0, len2 = 0, len3 = 0;
+
+	if (global.email_alert) {
+		va_start(argp, fmt);
+		vsnprintf(tmp,128,fmt, argp);
+		make_literal(tmp, buf);
+
+		len1 = strlen(global.email_to[0]);
+		len2 = strlen(global.email_to[1]);
+		len3 = strlen(global.email_to[2]);
+		memcpy(tmp, global.email_to[0], len1);
+		tmp[len1] = ' ';
+		len = len1 + 1;
+		if (len2 > 0) {
+			memcpy(tmp + len, global.email_to[1], len2); // includes terminating null
+			len += len2;
+			tmp[len] = ' ';
+			len += 1;
+			if (len3 > 0) {
+				memcpy(tmp + len, global.email_to[2], len3); // includes terminating null
+				len += len3;
+				tmp[len] = ' ';
+				len += 1;
+			}
+		}
+		tmp[len] = '\0';
+		snprintf(alertcmd, 1024, "echo \"%s\" | mail -s \"$(echo -e \"[HAProxy alert %s] %.60s...\nFrom:HAProxy <%s>\n\")\" %s&", buf, global.email_from, buf, global.email_from, tmp);
+
+		sysreturn = system(alertcmd);
+		if (sysreturn == -1) {
+			ha_warning("There was an error sending the email alert");
+		}
+		vfprintf(stderr, fmt, argp);
+		fflush(stderr);
+		va_end(argp);
+	}
+}
+
 /*
  * Displays the message on stderr with the date and pid. Overrides the quiet
  * mode during startup.
diff --git a/src/server.c b/src/server.c
index 236d6ba..776ba10 100644
--- a/src/server.c
+++ b/src/server.c
@@ -4975,6 +4975,7 @@
 
 				srv_append_status(tmptrash, s, NULL, xferred, 0);
 				ha_warning("%s.\n", tmptrash->area);
+				Emaila("%s \n", tmptrash->area);
 
 				/* we don't send an alert if the server was previously paused */
 				log_level = srv_was_stopping ? LOG_NOTICE : LOG_ALERT;
@@ -5069,6 +5070,7 @@
 
 				srv_append_status(tmptrash, s, NULL, xferred, 0);
 				ha_warning("%s.\n", tmptrash->area);
+				Emaila("%s \n", tmptrash->area);
 				send_log(s->proxy, LOG_NOTICE, "%s.\n",
 					 tmptrash->area);
 				send_email_alert(s, LOG_NOTICE, "%s",
