diff --git a/Makefile b/Makefile
index ef1d186..0f546de 100644
--- a/Makefile
+++ b/Makefile
@@ -1258,7 +1258,7 @@
 
 $(PROGRAM).8: $(PROGRAM).8.tmpl
 	@# Add the man page change date and version to the man page
-	@sed -e 's#.TH FLASHROM 8 .*#.TH FLASHROM 8 "$(MAN_DATE)" "$(VERSION)" "$(MAN_DATE)"#' <$< >$@
+	@sed -e 's#.TH FLASHROM 8 .*#.TH FLASHROM 8 "$(MAN_DATE)" "flashrom-stable-$(VERSION)" "$(MAN_DATE)"#' <$< >$@
 
 install: $(PROGRAM)$(EXEC_SUFFIX) $(PROGRAM).8
 	mkdir -p $(DESTDIR)$(PREFIX)/sbin
diff --git a/bitbang_spi.c b/bitbang_spi.c
index 6d14961..d22b6fc 100644
--- a/bitbang_spi.c
+++ b/bitbang_spi.c
@@ -97,7 +97,7 @@
 	    (master->request_bus && !master->release_bus) ||
 	    (!master->request_bus && master->release_bus)) {
 		msg_perr("Incomplete SPI bitbang master setting!\n"
-			 "Please report a bug at flashrom@flashrom.org\n");
+			 "Please report a bug at flashrom-stable@flashrom.org\n");
 		return ERROR_FLASHROM_BUG;
 	}
 
diff --git a/board_enable.c b/board_enable.c
index bfdd858..959b49d 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -618,9 +618,9 @@
 			/* The data sheet contradicts itself about max size. */
 			max_rom_decode.parallel = 1024 * 1024;
 			msg_pinfo("IT8705F with very unusual settings.\n"
-				  "Please send the output of \"flashrom -V -p internal\" to flashrom@flashrom.org\n"
-				  "with \"IT8705: your board name: flashrom -V\" as the subject to help us finish\n"
-				  "support for your Super I/O. Thanks.\n");
+				  "Please send the output of \"flashrom -V -p internal\" to\n"
+				  "flashrom-stable@flashrom.org with \"IT8705: your board name: flashrom -V\"\n"
+				  "as the subject to help us finish support for your Super I/O. Thanks.\n");
 			ret = 1;
 		} else if (tmp & 0x08) {
 			max_rom_decode.parallel = 512 * 1024;
@@ -2549,7 +2549,7 @@
 		const struct board_match *b = &board_matches[i];
 		if (b->vendor_name == NULL || b->board_name == NULL) {
 			msg_gerr("ERROR: Board enable #%d does not define a vendor and board name.\n"
-				 "Please report a bug at flashrom@flashrom.org\n", i);
+				 "Please report a bug at flashrom-stable@flashrom.org\n", i);
 			ret = 1;
 			continue;
 		}
@@ -2558,7 +2558,7 @@
 		    ((b->lb_vendor == NULL) ^ (b->lb_part == NULL)) ||
 		    (b->max_rom_decode_parallel == 0 && b->enable == NULL)) {
 			msg_gerr("ERROR: Board enable for %s %s is misdefined.\n"
-				 "Please report a bug at flashrom@flashrom.org\n",
+				 "Please report a bug at flashrom-stable@flashrom.org\n",
 				 b->vendor_name, b->board_name);
 			ret = 1;
 		}
@@ -2626,8 +2626,8 @@
 
 		if (partmatch) {
 			/* More than one entry has a matching name. */
-			msg_perr("Board name \"%s\":\"%s\" and PCI IDs matched more than one board enable "
-				 "entry. Please report a bug at flashrom@flashrom.org\n", vendor, model);
+			msg_perr("Board name \"%s\":\"%s\" and PCI IDs matched more than one board enable\n"
+				 "entry. Please report a bug at flashrom-stable@flashrom.org\n", vendor, model);
 			return NULL;
 		}
 		partmatch = board;
@@ -2710,7 +2710,7 @@
 		return 1;
 	}
 	msg_pwarn("NOTE: Running an untested board enable procedure.\n"
-		  "Please report success/failure to flashrom@flashrom.org.\n");
+		  "Please report success/failure to flashrom-stable@flashrom.org.\n");
 	return 0;
 }
 
diff --git a/ch341a_spi.c b/ch341a_spi.c
index f415617..67a78ee 100644
--- a/ch341a_spi.c
+++ b/ch341a_spi.c
@@ -422,7 +422,8 @@
 static int ch341a_spi_init(void)
 {
 	if (handle != NULL) {
-		msg_cerr("%s: handle already set! Please report a bug at flashrom@flashrom.org\n", __func__);
+		msg_cerr("%s: handle already set! Please report a bug at flashrom-stable@flashrom.org\n",
+			 __func__);
 		return -1;
 	}
 
diff --git a/chipset_enable.c b/chipset_enable.c
index be886ba..f052685 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -1623,8 +1623,8 @@
 		internal_buses_supported = BUS_NONE;
 		msg_pwarn("Flash bus type is unknown (none)\n");
 		msg_pinfo("Please send the log files created by \"flashrom -p internal -o logfile\" to\n"
-			  "flashrom@flashrom.org with \"your board name: flashrom -V\" as the subject to\n"
-			  "help us finish support for your chipset. Thanks.\n");
+			  "flashrom-stable@flashrom.org with \"your board name: flashrom -V\" as the subject\n"
+			  "to help us finish support for your chipset. Thanks.\n");
 		return ERROR_NONFATAL;
 	}
 
@@ -2154,7 +2154,7 @@
 			msg_pwarn("Warning: unexpected second chipset match: "
 				    "\"%s %s\"\n"
 				  "ignoring, please report lspci and board URL "
-				    "to flashrom@flashrom.org\n"
+				    "to flashrom-stable@flashrom.org\n"
 				  "with \'CHIPSET: your board name\' in the "
 				    "subject line.\n",
 				chipset_enables[i].vendor_name,
@@ -2179,8 +2179,8 @@
 				  "flashrom *and* were (not) able to "
 				  "successfully update your firmware with it,\n"
 				  "then please email a report to "
-				  "flashrom@flashrom.org including a verbose "
-				  "(-V) log.\nThank you!\n");
+				  "flashrom-stable@flashrom.org including a\n"
+				  "verbose (-V) log.\nThank you!\n");
 		}
 		if (!(chipset_enables[i].buses & (internal_buses_supported | BUS_SPI))) {
 			msg_pdbg("Skipping chipset enable: No supported buses enabled.\n");
diff --git a/cli_common.c b/cli_common.c
index 606eaa1..8cc1eda 100644
--- a/cli_common.c
+++ b/cli_common.c
@@ -69,10 +69,10 @@
 		}
 		msg_cinfo("The test status of this chip may have been updated in the latest development\n"
 			  "version of flashrom. If you are running the latest development version,\n"
-			  "please email a report to flashrom@flashrom.org if any of the above operations\n"
-			  "work correctly for you with this flash chip. Please include the flashrom log\n"
-			  "file for all operations you tested (see the man page for details), and mention\n"
-			  "which mainboard or programmer you tested in the subject line.\n"
+			  "please email a report to flashrom-stable@flashrom.org if any of the above\n"
+			  "operations work correctly for you with this flash chip. Please include the\n"
+			  "flashrom log file for all operations you tested (see the man page for details),\n"
+			  "and mention which mainboard or programmer you tested in the subject line.\n"
 			  "Thanks for your help!\n");
 	}
 }
diff --git a/dediprog.c b/dediprog.c
index e18356b..841cc02 100644
--- a/dediprog.c
+++ b/dediprog.c
@@ -375,8 +375,8 @@
 	const struct dediprog_data *dp_data = flash->mst->spi.data;
 
 	if (count >= 1 << 16) {
-		msg_perr("%s: Unsupported transfer length of %u blocks! "
-			 "Please report a bug at flashrom@flashrom.org\n",
+		msg_perr("%s: Unsupported transfer length of %u blocks!\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
 			 __func__, count);
 		return 1;
 	}
@@ -459,7 +459,8 @@
 		return 0;
 
 	if ((start % chunksize) || (len % chunksize)) {
-		msg_perr("%s: Unaligned start=%i, len=%i! Please report a bug at flashrom@flashrom.org\n",
+		msg_perr("%s: Unaligned start=%i, len=%i!\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
 			 __func__, start, len);
 		return 1;
 	}
@@ -609,13 +610,15 @@
 	 */
 	if (chunksize != 256) {
 		msg_perr("%s: Chunk sizes other than 256 bytes are unsupported, chunksize=%u!\n"
-			 "Please report a bug at flashrom@flashrom.org\n", __func__, chunksize);
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
+			 __func__, chunksize);
 		return 1;
 	}
 
 	if ((start % chunksize) || (len % chunksize)) {
-		msg_perr("%s: Unaligned start=%i, len=%i! Please report a bug "
-			 "at flashrom@flashrom.org\n", __func__, start, len);
+		msg_perr("%s: Unaligned start=%i, len=%i!\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
+			 __func__, start, len);
 		return 1;
 	}
 
diff --git a/digilent_spi.c b/digilent_spi.c
index 7431671..bcd73ae 100644
--- a/digilent_spi.c
+++ b/digilent_spi.c
@@ -375,7 +375,9 @@
 	int i;
 
 	if (handle != NULL) {
-		msg_cerr("%s: handle already set! Please report a bug at flashrom@flashrom.org\n", __func__);
+		msg_cerr("%s: handle already set!\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
+			 __func__);
 		return -1;
 	}
 
diff --git a/flashrom.8.tmpl b/flashrom.8.tmpl
index 5a2f00c..6fb6ca7 100644
--- a/flashrom.8.tmpl
+++ b/flashrom.8.tmpl
@@ -1592,8 +1592,8 @@
 .br
 some others, please see the flashrom svn changelog for details.
 .br
-All still active authors can be reached via
-.MTOB "flashrom@flashrom.org" "the mailing list" .
+Active maintainers can be reached via
+.MTOB "flashrom-stable@flashrom.org" "the mailing list" .
 .PP
 This manual page was written by
 .MTOB "uwe@hermann-uwe.de" "Uwe Hermann" ,
diff --git a/flashrom.c b/flashrom.c
index 4139349..2fb42fb 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -297,7 +297,7 @@
 	needlelen = strlen(needle);
 	if (!needlelen) {
 		msg_gerr("%s: empty needle! Please report a bug at "
-			 "flashrom@flashrom.org\n", __func__);
+			 "flashrom-stable@flashrom.org\n", __func__);
 		return NULL;
 	}
 	/* No programmer parameters given. */
@@ -517,7 +517,7 @@
 		break;
 	default:
 		msg_cerr("%s: Unsupported granularity! Please report a bug at "
-			 "flashrom@flashrom.org\n", __func__);
+			 "flashrom-stable@flashrom.org\n", __func__);
 	}
 	return result;
 }
@@ -582,7 +582,7 @@
 		break;
 	default:
 		msg_cerr("%s: Unsupported granularity! Please report a bug at "
-			 "flashrom@flashrom.org\n", __func__);
+			 "flashrom-stable@flashrom.org\n", __func__);
 		/* Claim that no write was needed. A write with unknown
 		 * granularity is too dangerous to try.
 		 */
@@ -809,7 +809,7 @@
 
 			msg_cinfo(" we need to add them manually.\n"
 				  "You can help us by mailing us the output of the following command to "
-				  "flashrom@flashrom.org:\n"
+				  "flashrom-stable@flashrom.org:\n"
 				  "'flashrom -VV [plus the -p/--programmer parameter]'\n"
 				  "Thanks for your help!\n"
 				  "===\n");
@@ -1012,19 +1012,17 @@
 			/* Blocks with zero size are bugs in flashchips.c. */
 			if (eraser.eraseblocks[i].count &&
 			    !eraser.eraseblocks[i].size) {
-				msg_gerr("ERROR: Flash chip %s erase function "
-					"%i region %i has size 0. Please report"
-					" a bug at flashrom@flashrom.org\n",
-					chip->name, k, i);
+				msg_gerr("ERROR: Flash chip %s erase function %i region %i has size 0.\n"
+					 "Please report a bug at flashrom-stable@flashrom.org\n",
+					 chip->name, k, i);
 				ret = 1;
 			}
 			/* Blocks with zero count are bugs in flashchips.c. */
 			if (!eraser.eraseblocks[i].count &&
 			    eraser.eraseblocks[i].size) {
-				msg_gerr("ERROR: Flash chip %s erase function "
-					"%i region %i has count 0. Please report"
-					" a bug at flashrom@flashrom.org\n",
-					chip->name, k, i);
+				msg_gerr("ERROR: Flash chip %s erase function %i region %i has count 0.\n"
+					 "Please report a bug at flashrom-stable@flashrom.org\n",
+					 chip->name, k, i);
 				ret = 1;
 			}
 			done += eraser.eraseblocks[i].count *
@@ -1040,9 +1038,9 @@
 		if (done != chip->total_size * 1024) {
 			msg_gerr("ERROR: Flash chip %s erase function %i "
 				"region walking resulted in 0x%06x bytes total,"
-				" expected 0x%06x bytes. Please report a bug at"
-				" flashrom@flashrom.org\n", chip->name, k,
-				done, chip->total_size * 1024);
+				" expected 0x%06x bytes.\n"
+				"Please report a bug at flashrom-stable@flashrom.org\n",
+				chip->name, k, done, chip->total_size * 1024);
 			ret = 1;
 		}
 		if (!eraser.block_erase)
@@ -1054,18 +1052,17 @@
 		for (j = k + 1; j < NUM_ERASEFUNCTIONS; j++) {
 			if (eraser.block_erase ==
 			    chip->block_erasers[j].block_erase) {
-				msg_gerr("ERROR: Flash chip %s erase function "
-					"%i and %i are identical. Please report"
-					" a bug at flashrom@flashrom.org\n",
-					chip->name, k, j);
+				msg_gerr("ERROR: Flash chip %s erase function %i and %i are identical.\n"
+					 "Please report a bug at flashrom-stable@flashrom.org\n",
+					 chip->name, k, j);
 				ret = 1;
 			}
 		}
 		if(curr_eraseblock_count > prev_eraseblock_count)
 		{
-			msg_gerr("ERROR: Flash chip %s erase function %i is not "
-					"in order. Please report a bug at flashrom@flashrom.org\n",
-					chip->name, k);
+			msg_gerr("ERROR: Flash chip %s erase function %i is not in order.\n"
+				 "Please report a bug at flashrom-stable@flashrom.org\n",
+				 chip->name, k);
 			ret = 1;
 		}
 		prev_eraseblock_count = curr_eraseblock_count;
@@ -1491,16 +1488,16 @@
 #if CONFIG_INTERNAL == 1
 	if (programmer == &programmer_internal)
 		msg_gerr("This means we have to add special support for your board, programmer or flash\n"
-			 "chip. Please report this to the mailing list at flashrom@flashrom.org or on\n"
-			 "IRC (see https://www.flashrom.org/Contact for details), thanks!\n"
+			 "chip. Please report this to the mailing list at flashrom-stable@flashrom.org or\n"
+			 "on IRC (see https://www.flashrom.org/Contact for details), thanks!\n"
 			 "-------------------------------------------------------------------------------\n"
 			 "You may now reboot or simply leave the machine running.\n");
 	else
 #endif
 		msg_gerr("Please check the connections (especially those to write protection pins) between\n"
 			 "the programmer and the flash chip. If you think the error is caused by flashrom\n"
-			 "please report this to the mailing list at flashrom@flashrom.org or on IRC (see\n"
-			 "https://www.flashrom.org/Contact for details), thanks!\n");
+			 "please report this to the mailing list at flashrom-stable@flashrom.org or on IRC\n"
+			 "(see https://www.flashrom.org/Contact for details), thanks!\n");
 }
 
 static void emergency_help_message(void)
@@ -1509,13 +1506,13 @@
 #if CONFIG_INTERNAL == 1
 	if (programmer == &programmer_internal)
 		msg_gerr("Get help on IRC (see https://www.flashrom.org/Contact) or mail\n"
-			"flashrom@flashrom.org with the subject \"FAILED: <your board name>\"!"
+			"flashrom-stable@flashrom.org with the subject \"FAILED: <your board name>\"!\n"
 			"-------------------------------------------------------------------------------\n"
 			"DO NOT REBOOT OR POWEROFF!\n");
 	else
 #endif
-		msg_gerr("Please report this to the mailing list at flashrom@flashrom.org or\n"
-			 "on IRC (see https://www.flashrom.org/Contact for details), thanks!\n");
+		msg_gerr("Please report this to the mailing list at flashrom-stable@flashrom.org\n"
+			 "or on IRC (see https://www.flashrom.org/Contact for details), thanks!\n");
 }
 
 void list_programmers_linebreak(int startcol, int cols, int paren)
@@ -1632,7 +1629,7 @@
 
 void print_version(void)
 {
-	msg_ginfo("flashrom %s", flashrom_version);
+	msg_ginfo("flashrom-stable %s", flashrom_version);
 	print_sysinfo();
 	msg_ginfo("\n");
 }
@@ -1713,7 +1710,7 @@
 			if (chip->vendor == NULL || chip->name == NULL || chip->bustype == BUS_NONE) {
 				ret = 1;
 				msg_gerr("ERROR: Some field of flash chip #%d (%s) is misconfigured.\n"
-					 "Please report a bug at flashrom@flashrom.org\n", i,
+					 "Please report a bug at flashrom-stable@flashrom.org\n", i,
 					 chip->name == NULL ? "unnamed" : chip->name);
 			}
 			if (selfcheck_eraseblocks(chip)) {
diff --git a/ich_descriptors.c b/ich_descriptors.c
index bacbbb5..8ae8e4a 100644
--- a/ich_descriptors.c
+++ b/ich_descriptors.c
@@ -1066,7 +1066,7 @@
 			msg_pwarn("\nThe flash descriptor looks like a Skylake/Sunrise Point descriptor.\n"
 				  "However, the read frequency isn't set to 17MHz (the only valid value).\n"
 				  "Please report this message, the output of `ich_descriptors_tool` for\n"
-				  "your descriptor and the output of `lspci -nn` to flashrom@flashrom.org\n\n");
+				  "your descriptor and the output of `lspci -nn` to flashrom-stable@flashrom.org\n\n");
 		}
 		break;
 	default:
@@ -1074,7 +1074,7 @@
 			msg_pwarn("\nThe flash descriptor has the read frequency set to 17MHz. However,\n"
 				  "it doesn't look like a Skylake/Sunrise Point compatible descriptor.\n"
 				  "Please report this message, the output of `ich_descriptors_tool` for\n"
-				  "your descriptor and the output of `lspci -nn` to flashrom@flashrom.org\n\n");
+				  "your descriptor and the output of `lspci -nn` to flashrom-stable@flashrom.org\n\n");
 		}
 	}
 	return guess;
diff --git a/jedec.c b/jedec.c
index 0709efa..280eed7 100644
--- a/jedec.c
+++ b/jedec.c
@@ -649,7 +649,7 @@
 	/* Only allow changes to known read/write/lockdown bits */
 	if (((cur ^ new) & ~REG2_MASK) != 0) {
 		msg_cerr("Invalid lock change from 0x%02x to 0x%02x requested at 0x%0*" PRIxPTR "!\n"
-			 "Please report a bug at flashrom@flashrom.org\n",
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
 			 cur, new, PRIxPTR_WIDTH, lockreg);
 		return -1;
 	}
diff --git a/linux_mtd.c b/linux_mtd.c
index 9499f26..e11ff1c 100644
--- a/linux_mtd.c
+++ b/linux_mtd.c
@@ -262,8 +262,9 @@
 	uint32_t u;
 
 	if (mtd_no_erase) {
-		msg_perr("%s: device does not support erasing. Please file a "
-				"bug report at flashrom@flashrom.org\n", __func__);
+		msg_perr("%s: device does not support erasing.\n"
+			 "Please file a bug report at flashrom-stable@flashrom.org\n",
+			 __func__);
 		return 1;
 	}
 
diff --git a/ni845x_spi.c b/ni845x_spi.c
index f6f4fe8..1df76c0 100644
--- a/ni845x_spi.c
+++ b/ni845x_spi.c
@@ -163,7 +163,7 @@
 			// malformed resource string detected
 			msg_pwarn("Warning: Unable to parse the %s NI-845x resource string.\n",
 				  resource_name);
-			msg_pwarn("Please report a bug at flashrom@flashrom.org\n");
+			msg_pwarn("Please report a bug at flashrom-stable@flashrom.org\n");
 			continue;
 		}
 
diff --git a/opaque.c b/opaque.c
index 276934f..ab39100 100644
--- a/opaque.c
+++ b/opaque.c
@@ -51,8 +51,8 @@
 	struct registered_master rmst;
 
 	if (!mst->probe || !mst->read || !mst->write || !mst->erase) {
-		msg_perr("%s called with incomplete master definition. "
-			 "Please report a bug at flashrom@flashrom.org\n",
+		msg_perr("%s called with incomplete master definition.\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
 			 __func__);
 		return ERROR_FLASHROM_BUG;
 	}
diff --git a/pcidev.c b/pcidev.c
index 9ffe05c..2c6bbed 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -142,7 +142,7 @@
 		addr &= PCI_ROM_ADDRESS_MASK;
 		break;
 	case TYPE_UNKNOWN:
-		msg_perr("BAR type unknown, please report a bug at flashrom@flashrom.org\n");
+		msg_perr("BAR type unknown, please report a bug at flashrom-stable@flashrom.org\n");
 	}
 
 	return (uintptr_t)addr;
@@ -152,7 +152,8 @@
 {
 	if (pacc == NULL) {
 		msg_perr("%s: Tried to cleanup an invalid PCI context!\n"
-			 "Please report a bug at flashrom@flashrom.org\n", __func__);
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
+			 __func__);
 		return 1;
 	}
 	pci_cleanup(pacc);
@@ -164,7 +165,7 @@
 {
 	if (pacc != NULL) {
 		msg_perr("%s: Tried to allocate a new PCI context, but there is still an old one!\n"
-			 "Please report a bug at flashrom@flashrom.org\n", __func__);
+			 "Please report a bug at flashrom-stable@flashrom.org\n", __func__);
 		return 1;
 	}
 	pacc = pci_alloc();     /* Get the pci_access structure */
@@ -222,8 +223,8 @@
 			if (devs[i].status == NT)
 				msg_pinfo("===\nThis PCI device is UNTESTED. Please report the 'flashrom -p "
 					  "xxxx' output\n"
-					  "to flashrom@flashrom.org if it works for you. Please add the name "
-					  "of your\n"
+					  "to flashrom-stable@flashrom.org if it works for you. Please add "
+					  "the name of your\n"
 					  "PCI device to the subject. Thank you for your help!\n===\n");
 
 			/* FIXME: We should count all matching devices, not
@@ -271,7 +272,7 @@
 	struct undo_pci_write_data *data = p;
 	if (pacc == NULL || data->dev == NULL) {
 		msg_perr("%s: Tried to undo PCI writes without a valid PCI %s!\n"
-			"Please report a bug at flashrom@flashrom.org\n",
+			"Please report a bug at flashrom-stable@flashrom.org\n",
 			__func__, data->dev == NULL ? "device" : "context");
 		return 1;
 	}
diff --git a/physmap.c b/physmap.c
index 796860c..e2d47d6 100644
--- a/physmap.c
+++ b/physmap.c
@@ -316,7 +316,7 @@
 	/* No need to check for zero size, such mappings would have yielded ERROR_PTR. */
 	if (virt_addr == ERROR_PTR) {
 		msg_perr("Trying to unmap a nonexisting mapping!\n"
-			 "Please report a bug at flashrom@flashrom.org\n");
+			 "Please report a bug at flashrom-stable@flashrom.org\n");
 		return;
 	}
 
@@ -330,7 +330,7 @@
 	/* No need to check for zero size, such mappings would have yielded ERROR_PTR. */
 	if (virt_addr == ERROR_PTR) {
 		msg_perr("Trying to unmap a nonexisting mapping!\n"
-			 "Please report a bug at flashrom@flashrom.org\n");
+			 "Please report a bug at flashrom-stable@flashrom.org\n");
 		return;
 	}
 	tmp = (uintptr_t)virt_addr;
diff --git a/print.c b/print.c
index 8d55b8b..1f6bece 100644
--- a/print.c
+++ b/print.c
@@ -497,8 +497,9 @@
 			}
 			break;
 		default:
-			msg_gerr("\n%s: %s: Uninitialized programmer type! Please report a bug at "
-				 "flashrom@flashrom.org\n", __func__, prog->name);
+			msg_gerr("\n%s: %s: Uninitialized programmer type!\n"
+				 "Please report a bug at flashrom-stable@flashrom.org\n",
+				 __func__, prog->name);
 			break;
 		}
 	}
diff --git a/programmer.c b/programmer.c
index bee60e3..d7f1968 100644
--- a/programmer.c
+++ b/programmer.c
@@ -87,8 +87,8 @@
 	if (!mst->chip_writeb || !mst->chip_writew || !mst->chip_writel ||
 	    !mst->chip_writen || !mst->chip_readb || !mst->chip_readw ||
 	    !mst->chip_readl || !mst->chip_readn) {
-		msg_perr("%s called with incomplete master definition. "
-			 "Please report a bug at flashrom@flashrom.org\n",
+		msg_perr("%s called with incomplete master definition.\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
 			 __func__);
 		return ERROR_FLASHROM_BUG;
 	}
diff --git a/sb600spi.c b/sb600spi.c
index 8664fa9..7727118 100644
--- a/sb600spi.c
+++ b/sb600spi.c
@@ -113,8 +113,9 @@
 			msg_pdbg("SB8xx/SB9xx/Hudson-1 detected.\n");
 		} else {
 			msg_pwarn("SB device found but SMBus revision 0x%02x does not match known values.\n"
-				  "Assuming SB8xx/SB9xx/Hudson-1. Please send a log to flashrom@flashrom.org\n",
-				   rev);
+				  "Assuming SB8xx/SB9xx/Hudson-1.\n"
+				  "Please send a log to flashrom-stable@flashrom.org\n",
+				  rev);
 			amd_gen = CHIPSET_SB89XX;
 		}
 	} else if (dev->device_id == 0x780e) {
@@ -134,8 +135,8 @@
 			msg_pdbg("Yangtze detected.\n");
 		} else {
 			msg_pwarn("FCH device found but SMBus revision 0x%02x does not match known values.\n"
-				  "Please report this to flashrom@flashrom.org and include this log and\n"
-				  "the output of lspci -nnvx, thanks!.\n", rev);
+				  "Please report this to flashrom-stable@flashrom.org and include this\n"
+				  "log and the output of lspci -nnvx, thanks!.\n", rev);
 		}
 	} else if (dev->device_id == 0x790e) {
 		int rev = find_smbus_dev_rev(0x1022, 0x790B);
@@ -149,15 +150,15 @@
 			msg_pdbg("Promontory detected.\n");
 		} else {
 			msg_pwarn("FCH device found but SMBus revision 0x%02x does not match known values.\n"
-				  "Please report this to flashrom@flashrom.org and include this log and\n"
-				  "the output of lspci -nnvx, thanks!.\n", rev);
+				  "Please report this to flashrom-stable@flashrom.org and include this\n"
+				  "log and the output of lspci -nnvx, thanks!.\n", rev);
 		}
 
 
 	} else
 		msg_pwarn("%s: Unknown LPC device %" PRIx16 ":%" PRIx16 ".\n"
-			  "Please report this to flashrom@flashrom.org and include this log and\n"
-			  "the output of lspci -nnvx, thanks!\n",
+			  "Please report this to flashrom-stable@flashrom.org and include this\n"
+			  "log and the output of lspci -nnvx, thanks!\n",
 			  __func__, dev->vendor_id, dev->device_id);
 	if (amd_gen == CHIPSET_AMD_UNKNOWN) {
 		msg_perr("Could not determine chipset generation.");
diff --git a/sfdp.c b/sfdp.c
index b549417..bf14482 100644
--- a/sfdp.c
+++ b/sfdp.c
@@ -86,7 +86,7 @@
 	if (erasefn == NULL || total_size == 0 || block_size == 0 ||
 	    total_size % block_size != 0) {
 		msg_cdbg("%s: invalid input, please report to "
-			 "flashrom@flashrom.org\n", __func__);
+			 "flashrom-stable@flashrom.org\n", __func__);
 		return 1;
 	}
 
@@ -115,8 +115,8 @@
 			  opcode);
 		return 0;
 	}
-	msg_cinfo("%s: Not enough space to store another eraser (i=%d)."
-		  " Please report this at flashrom@flashrom.org\n",
+	msg_cinfo("%s: Not enough space to store another eraser (i=%d).\n"
+		  "Please report this at flashrom-stable@flashrom.org\n",
 		  __func__, i);
 	return 1;
 }
diff --git a/spi.c b/spi.c
index aed2a92..86141cc 100644
--- a/spi.c
+++ b/spi.c
@@ -76,9 +76,8 @@
 {
 	unsigned int max_data = flash->mst->spi.max_data_read;
 	if (max_data == MAX_DATA_UNSPECIFIED) {
-		msg_perr("%s called, but SPI read chunk size not defined "
-			 "on this hardware. Please report a bug at "
-			 "flashrom@flashrom.org\n", __func__);
+		msg_perr("%s called, but SPI read chunk size not defined on this hardware.\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n", __func__);
 		return 1;
 	}
 	return spi_read_chunked(flash, buf, start, len, max_data);
@@ -88,9 +87,8 @@
 {
 	unsigned int max_data = flash->mst->spi.max_data_write;
 	if (max_data == MAX_DATA_UNSPECIFIED) {
-		msg_perr("%s called, but SPI write chunk size not defined "
-			 "on this hardware. Please report a bug at "
-			 "flashrom@flashrom.org\n", __func__);
+		msg_perr("%s called, but SPI write chunk size not defined on this hardware.\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n", __func__);
 		return 1;
 	}
 	return spi_write_chunked(flash, buf, start, len, max_data);
@@ -139,8 +137,8 @@
 	    !mst->multicommand ||
 	    ((mst->command == default_spi_send_command) &&
 	     (mst->multicommand == default_spi_send_multicommand))) {
-		msg_perr("%s called with incomplete master definition. "
-			 "Please report a bug at flashrom@flashrom.org\n",
+		msg_perr("%s called with incomplete master definition.\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
 			 __func__);
 		return ERROR_FLASHROM_BUG;
 	}
diff --git a/spi25.c b/spi25.c
index 20f5e97..734df28 100644
--- a/spi25.c
+++ b/spi25.c
@@ -636,8 +636,9 @@
 	case 0xdc:
 		return &spi_block_erase_dc;
 	default:
-		msg_cinfo("%s: unknown erase opcode (0x%02x). Please report "
-			  "this at flashrom@flashrom.org\n", __func__, opcode);
+		msg_cinfo("%s: unknown erase opcode (0x%02x).\n"
+			  "Please report this at flashrom-stable@flashrom.org\n",
+			  __func__, opcode);
 		return NULL;
 	}
 }
@@ -758,8 +759,9 @@
 	 */
 	/* The data sheet requires a start address with the low bit cleared. */
 	if (start % 2) {
-		msg_cerr("%s: start address not even! Please report a bug at "
-			 "flashrom@flashrom.org\n", __func__);
+		msg_cerr("%s: start address not even!\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
+			 __func__);
 		if (spi_chip_write_1(flash, buf, start, start % 2))
 			return SPI_GENERIC_ERROR;
 		pos += start % 2;
@@ -768,8 +770,9 @@
 	}
 	/* The data sheet requires total AAI write length to be even. */
 	if (len % 2) {
-		msg_cerr("%s: total write length not even! Please report a "
-			 "bug at flashrom@flashrom.org\n", __func__);
+		msg_cerr("%s: total write length not even!\n"
+			 "Please report a bug at flashrom-stable@flashrom.org\n",
+			 __func__);
 		/* Do not return an error for now. */
 		//return SPI_GENERIC_ERROR;
 	}
