diff --git a/web/root/blogs/blog_config.js b/web/root/blogs/blog_config.js
index 8da2de3c3e3bc8b4b02d040b89f6e000dee5badd..af22ee6148e03b2499bbdb9423e1b0aea5a4839e 100644
--- a/web/root/blogs/blog_config.js
+++ b/web/root/blogs/blog_config.js
@@ -33,6 +33,11 @@ var subject=parameters[6];
 //	exit(1);
 //}
 
+if(!msg_area.sub[msg_code].can_read) {
+	write("<html><head><title>Error</title></head><body>Error opening "+msg_code+"!</body></html>");
+	exit(1);
+}
+
 var msgbase = new MsgBase(msg_code);
 if(!msgbase.open()) {
 	write("<html><head><title>Error</title></head><body>Error opening "+msg_code+"!</body></html>");
diff --git a/web/root/blogs/blog_item.xjs b/web/root/blogs/blog_item.xjs
index ee7c5fb2008ea18e3ad10cfee237a670bd2ca945..30f21e181d958020d48a91857c348982d8832cf2 100644
--- a/web/root/blogs/blog_item.xjs
+++ b/web/root/blogs/blog_item.xjs
@@ -58,6 +58,10 @@ function not_found_error(reason)
 }
 
 var hdr=msgbase.get_msg_header(msgid);
+if(hdr==null)
+	not_found_error("no header");
+if(hdr.attr & (MSG_PRIVATE|MSG_DELETE))
+	not_found_error("not viewable");
 if(hdr.from.toUpperCase() != poster.toUpperCase())
 	not_found_error("poster");
 //if(hdr.from_ext != pnum)
@@ -126,6 +130,10 @@ while(1) {
 		}
 	}
 	hdr=msgbase.get_msg_header(msgid);
+	if(hdr==null)
+		continue;
+	if(hdr.attr & (MSG_PRIVATE|MSG_DELETE))
+		continue;
 	var body=msgbase.get_msg_body(msgid, true);
 	body=html_encode(body,true,true,false,false);
 	//body=body.split("&#13;&#10;&#13;&#10;").join("</p><p>");
diff --git a/web/root/blogs/msg_index.xjs b/web/root/blogs/msg_index.xjs
index ce167fa98869af206d96fa70399b379830228906..ab2c8414f19299e1f0f14f76d50ab455be740f5a 100644
--- a/web/root/blogs/msg_index.xjs
+++ b/web/root/blogs/msg_index.xjs
@@ -6,6 +6,8 @@
 <?xjs
 for(var grp in msg_area.grp_list) {
 	for(var sub in msg_area.grp_list[grp].sub_list) {
+		if(!msg_area.grp_list[grp].sub_list[sub].can_read)
+			continue;
 		write('<a href="'+msg_area.grp_list[grp].sub_list[sub].code+'/">'+msg_area.grp_list[grp].sub_list[sub].description+'</a><br>');
 	}
 }