diff --git a/NEWS b/NEWS
index ca9b1c3785fb38655ba0c9e11ea0e3b1e54f7e4a..70d3d678648b92d69305f4be75180ebd16345cc9 100644
--- a/NEWS
+++ b/NEWS
@@ -1,14 +1,16 @@
 News
 ====
 
-Version 2.6.0 beta 1
---------------------
+
+Version 2.6.0 beta1
+-------------------
 
 *(unreleased)*
 
 - Deprecated ``admin_up`` field. Instead, ``admin_state`` is introduced,
   with 3 possible values -- ``up``, ``down`` and ``offline``.
 
+
 Version 2.5.0 rc4
 -----------------
 
@@ -326,6 +328,7 @@ Many bug-fixes and a few new small features:
 And as usual, various improvements to the error messages, documentation
 and man pages.
 
+
 Version 2.4.1
 -------------
 
@@ -836,8 +839,8 @@ Internal changes:
   server endpoint
 
 
-Version 2.2.0 beta 0
---------------------
+Version 2.2.0 beta0
+-------------------
 
 *(Released Thu, 17 Jun 2010)*
 
@@ -1493,16 +1496,16 @@ Version 2.0.1
   error handling path called a wrong function name)
 
 
-Version 2.0.0 final
--------------------
+Version 2.0.0
+-------------
 
 *(Released Wed, 27 May 2009)*
 
 - no changes from rc5
 
 
-Version 2.0 release candidate 5
--------------------------------
+Version 2.0 rc5
+---------------
 
 *(Released Wed, 20 May 2009)*
 
@@ -1512,8 +1515,8 @@ Version 2.0 release candidate 5
 - make watcher automatically start the master daemon if down
 
 
-Version 2.0 release candidate 4
--------------------------------
+Version 2.0 rc4
+---------------
 
 *(Released Mon, 27 Apr 2009)*
 
@@ -1527,8 +1530,8 @@ Version 2.0 release candidate 4
 - miscellaneous doc and man pages fixes
 
 
-Version 2.0 release candidate 3
--------------------------------
+Version 2.0 rc3
+---------------
 
 *(Released Wed, 8 Apr 2009)*
 
@@ -1541,8 +1544,8 @@ Version 2.0 release candidate 3
   toolchains
 
 
-Version 2.0 release candidate 2
--------------------------------
+Version 2.0 rc2
+---------------
 
 *(Released Fri, 27 Mar 2009)*
 
@@ -1554,8 +1557,8 @@ Version 2.0 release candidate 2
 - Some documentation fixes and updates
 
 
-Version 2.0 release candidate 1
--------------------------------
+Version 2.0 rc1
+---------------
 
 *(Released Mon, 2 Mar 2009)*
 
@@ -1568,8 +1571,8 @@ Version 2.0 release candidate 1
 - Fix an issue related to $libdir/run/ganeti and cluster creation
 
 
-Version 2.0 beta 2
-------------------
+Version 2.0 beta2
+-----------------
 
 *(Released Thu, 19 Feb 2009)*
 
@@ -1586,8 +1589,8 @@ Version 2.0 beta 2
 - Many other bugfixes and small improvements
 
 
-Version 2.0 beta 1
-------------------
+Version 2.0 beta1
+-----------------
 
 *(Released Mon, 26 Jan 2009)*
 
@@ -1800,8 +1803,8 @@ Version 1.2.0
 - Change parsing of lvm commands to ignore stderr
 
 
-Version 1.2b3
--------------
+Version 1.2 beta3
+-----------------
 
 *(Released Wed, 28 Nov 2007)*
 
@@ -1812,8 +1815,8 @@ Version 1.2b3
 - QA updates
 
 
-Version 1.2b2
--------------
+Version 1.2 beta2
+-----------------
 
 *(Released Tue, 13 Nov 2007)*
 
diff --git a/autotools/check-news b/autotools/check-news
index 51a0403acc7a5bc6574352ae40c1fbeccdcc5e89..870e31d5b0342a972f9fbb4ce2ee4fa0e46b81c3 100755
--- a/autotools/check-news
+++ b/autotools/check-news
@@ -35,6 +35,7 @@ DASHES_RE = re.compile(r"^\s*-+\s*$")
 RELEASED_RE = re.compile(r"^\*\(Released (?P<day>[A-Z][a-z]{2}),"
                          r" (?P<date>.+)\)\*$")
 UNRELEASED_RE = re.compile(r"^\*\(unreleased\)\*$")
+VERSION_RE = re.compile(r"^Version \d+(\.\d+)+( (beta|rc)\d+)?$")
 
 
 def main():
@@ -45,13 +46,33 @@ def main():
 
   prevline = None
   expect_date = False
+  count_empty = 0
 
   for line in fileinput.input():
     line = line.rstrip("\n")
 
+    if VERSION_RE.match(line):
+      if count_empty != 2:
+        raise Exception("Line %s: Missing 2 empty lines before %s" %
+                        (fileinput.filelineno(), line))
+
+    if UNRELEASED_RE.match(line) or RELEASED_RE.match(line):
+      if count_empty != 1:
+        raise Exception("Line %s: Missing 1 empty line before %s" %
+                        (fileinput.filelineno(), line))
+
+    if line:
+      count_empty = 0
+    else:
+      count_empty += 1
+
     if DASHES_RE.match(line):
-      if not prevline.startswith("Version "):
-        raise Exception("Line %s: Invalid title" % (fileinput.filelineno() - 1))
+      if not VERSION_RE.match(prevline):
+        raise Exception("Line %s: Invalid title" %
+                        (fileinput.filelineno() - 1))
+      if len(line) != len(prevline):
+        raise Exception("Line %s: Invalid dashes length" %
+                        (fileinput.filelineno()))
       expect_date = True
 
     elif expect_date: