<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>HOWTO : Help Moderate netbeans.org Mailing Lists</title>
<meta name="description" content="HOWTO : Use the shared moderator mailbox to help moderate netbeans.org mailing lists">
<META NAME="AUTHOR" CONTENT="&#106;&#99;&#97;&#116;&#99;&#104;&#112;&#111;&#111;&#108;&#101; &#x40; &#110;&#101;&#116;&#98;&#101;&#97;&#110;&#115;&#46;&#111;&#114;&#103; ">
<link rel="stylesheet" type="text/css" href="../../netbeans.css" media="screen">
<META NAME="NAV_LINK" content="Moderating">
</head>
<body>

<h1>Help Moderate netbeans.org Mailing Lists</h1>

<ul>
<li><a href="#intro">Introduction</A></li>
<li><a href="#apply">Who Should Apply?</a></li>
<li><a href="#setup">Setting up your mail client</a></li>
<li><a href="#firewall">Behind a Firewall ?</a></li>
<li><a href="#next">OK, What Next ?</a></li>
<li><a href="#spam">Spam</a></li>
</ul>

<a name="intro"><h2>Introduction</h2></a>

<p>Most top-level lists on netbeans.org (like nbdev, nbusers, etc) are
"discuss" lists, in the list server terminology.  Discuss lists are lists to
which you must be subscribed to post messages to.  Any messages coming from an
email address that is not subscribed are bounced to moderators for evaluation.</p>

<p>This is a very good way of stopping spam from getting through to the list and
hence all subscribers.  It's not worth the effort for a spammer to actually
subscribe to a list before spamming it.  The spams are bounced to the moderators
where they can be stopped and junked before being sent on to the list.</p>

<p>However this kind of moderation can also delay legitimate posts from real
NetBeans users.  All of the following scenarios will result in a valid post being
bounced to the moderators for approval :</p>

<ul>
<li>A user does not realise they need to be subscribed to post to nbusers.
They post their question to the list.

<p><li>A user has 2 email addresses, eg work and home.  One of those addresses
is subscribed, and from that address they post freely.  Sometimes they post
from the other address, forgetting it is not subscribed.

<p><li>A user in a corporate environment is subscribed to a list, and posts
freely.  The company mail servers are reconfigured, and the "From" address of
messages she sends changes, without her knowledge.  Such a change might be
something like "From : <script language="JavaScript" type="text/javascript"><!--
var user = "&#74;&#97;&#110;&#101;";
var domain = "&#99;&#111;&#109;&#112;&#97;&#110;&#121;&#46;&#99;&#111;&#109;";
var at = "&#x40;";
document.write(user + at + domain);
//--></script><noscript>
&#74;&#97;&#110;&#101;
&#x40;
&#99;&#111;&#109;&#112;&#97;&#110;&#121;&#46;&#99;&#111;&#109;

</noscript>" to "From : <script language="JavaScript" type="text/javascript"><!--
var user = "&#74;&#97;&#110;&#101;";
var domain = "&#115;&#101;&#114;&#118;&#101;&#114;&#46;&#99;&#111;&#109;&#112;&#97;&#110;&#121;&#46;&#99;&#111;&#109;";
var at = "&#x40;";
document.write(user + at + domain);
//--></script><noscript>
&#74;&#97;&#110;&#101;
&#x40;
&#115;&#101;&#114;&#118;&#101;&#114;&#46;&#99;&#111;&#109;&#112;&#97;&#110;&#121;&#46;&#99;&#111;&#109;
</noscript>".
</ul>

<p>As described in the FAQ, <a href="http://wiki.netbeans.org/wiki/view/FaqMessageTakesLongToShow">moderation will delay these valid posts</a>.
The more moderators there are, the less delay there will be, and of course,
the less work for other moderators.

<P>If you'd like to help moderate, here's how.

<P><a name="apply"><h2>Who Should Apply ?</h2></A>

<br>Moderation is a serious responsibility.  Some of the netbeans.org lists are
very large, with thousands of subscribers.  Only people that are known on the
lists and long term subscribers can be considered as moderators. This is to
prevent for eg an unknown spammer signing up, spamming all lists with some junk
or a virus, and then using her moderator position to approve all those spams.


<p>If you think you qualify, and you'd like to help moderate, please <script language="JavaScript" type="text/javascript">
<!--
var user = "&#119;&#101;&#98;&#109;&#97;&#115;&#116;&#101;&#114;";
var domain = "&#110;&#101;&#116;&#98;&#101;&#97;&#110;&#115;&#46;&#111;&#114;&#103;";
var at = "&#x40;";
document.write('<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;' + user + at + domain + '">get in touch</a>');
//-->
</script>
<noscript>
<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#119;&#101;&#98;&#109;&#97;&#115;&#116;&#101;&#114;&#x40;&#110;&#101;&#116;&#98;&#101;&#97;&#110;&#115;&#46;&#111;&#114;&#103;">get in touch</a>
</noscript>
.

<P><A NAME="setup"><h2>Setting up your mail client</h2></A>

<BR>A shared Moderator account where all moderation messages are sent has
been set up for moderators use.  By configuring your mail client to access this
mailbox, you can see the queue of messages waiting for moderation.  If you
approve or reject those msgs in the queue, and delete them from the mailbox, the
next moderator to log in will only see any new messages that have not yet been
processed.

<P>Following are instructions for setting up Mozilla and Thunderbird mail clients
to access this shared mailbox.  If you are behind a firewall, also see
<a href="#firewall">the following section</a>.

<P><A NAME="moz"><B>Thunderbird 1.0.* / Mozilla 1.x / Netscape 7.x</B></A>

<P><UL>

<LI>From the Edit Menu, choose Account Settings [Thunderbird] / Mail and Newsgroup Account Settings [Mozilla 1.x / Netscape 7.x]

<p><LI>On the panel that opens, Click Add Account.  Follow through
the wizard, using these settings :

<P>&nbsp;&nbsp;Type of Acct : Email
<BR>&nbsp;&nbsp;Enter your real name and email as normal
<BR>&nbsp;&nbsp;Select IMAP
<BR>&nbsp;&nbsp;Server name is <TT>pop.netbeans.info</TT>
<BR>&nbsp;&nbsp;Username : <TT>moderator</TT>
<BR>&nbsp;&nbsp;Account Name : whatever you like, eg NetBeans Moderator

<P>Click OK.  You should now see the account listed on the left.

<P><LI>Select "Server Settings" for the Moderator acct.

<P>&nbsp;&nbsp;When I delete a msg : <tt>Move it to Trash</tt>

<BR>&nbsp;&nbsp;Check <TT>Expunge Inbox on Exit</TT>
<BR>&nbsp;&nbsp;DO NOT CHECK <TT>Empty Trash on Exit</TT>

<P><LI>Click Advanced.

<P>&nbsp;&nbsp;Check <TT>Show only subscribed folders</TT>

<BR>&nbsp;&nbsp;UNCheck <TT>Server supports folders than contain sub-folders and msgs</TT>
<BR>&nbsp;&nbsp;Leave Personal / Public / Other Namespaces fields blank
<BR>&nbsp;&nbsp;UNCheck <TT>Allow server to override these namespaces</TT>

<P><LI>Select "Copies and Folders"

<P>When sending msgs : Using the "Sent" on Moderator option will not work, you should check the
"Other" radio button, and via the combo-box choose <tt>Moderator -&gt; Inbox -&gt; Sent</tt>

<P>Click OK to close the Account panel.  You should see your new NetBeans
Moderator account listed under your normal account and folder list on the left.

<LI>Select (click on) the new Moderator account.

<p><LI>From the File menu, choose Subscribe

<p><LI>You will be prompted for a password - enter the password you received when <a href="#apply">your moderator application</a> was accepted.

<p><LI>From the list of mailboxes, check (subscribe to) :
<br>&nbsp;&nbsp;Inbox
<br>&nbsp;&nbsp;Sent
<br>&nbsp;&nbsp;Spam
<br>&nbsp;&nbsp;Trash

<p><li>Outgoing Server (SMTP) - just use your default SMTP server here, your mail
client should automatically fill that in.  Do not use pop.netbeans.info. 
</li>
</UL>

<P>You're done.  See <a href="#next">OK, What Next</a> below to start moderating.</p>

<a name="firewall"><h2>Behind a Firewall ?</h2></a>

<p>If you are behind a corporate firewall it will not be possible to connect
directly to netbeans.info mail server. In this case you may be able to set up a
<i>port forwarding SSH tunnel</i> to the mail server.  You will need a login
account on some SSH server, somewhere, it doesn't matter where.</p>

<p><b>Setting up email client</b>
<br>Steps are almost the same as described in the previous section <a href="#setup">Setting up your mail client</a>, except :

<br><ul>
<li>Server name is: <TT>localhost</TT></li>
<li>Server port is: <tt>4500</tt></li>
</ul>

<br>All other settings are the same.</p>

<p><b>Setting up the SSH tunnel</b>

<ul>
<li><b><a name="lin">Linux users</a></b>
	<ul>
	<li>Open a new ssh connection to <tt>host</tt> with this command (where user is your login name,
	and host is the host you have an account on) :
		<p>&nbsp;&nbsp;&nbsp;<tt>ssh -L 4500:pop.netbeans.info:143&nbsp; user@host</tt></li>

	</ul>
</li>

<li><b><a name="win">Windows users</a></b>
	<ul>
  <li>Use your favourite SSH client, or if you don't have one, download and install
  <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">Putty</a> (free Win32 Telnet and SSH client).
  Directions here are for Putty, but other clients should be similar.</li>
	<li>Open an SSH connection using Putty
		<ul>
			<li>enter the hostname of the host you have an account on</li>
			<li>port: <TT>22</TT>, Protocol: <TT>SSH</TT></li>
			<li>in the left menu click: <i>Connection -&gt; SSH -&gt; Tunnels</i> </li>
			<li>in bottom part of the form insert following - Source port: <TT>4500</TT>, Destination: <TT>pop.netbeans.info:143</TT> </li>
			<li>leave <tt>Local</tt> radio checked</li>
			<li>click <tt>Add</tt></li>
			<li>click <tt>Open</tt></li>
			<li>enter appropriate password</li>
		</ul>
	</li>
	</ul>

</li>
</ul>

<p>You're done.  As long as this tunnel connection is open, you will be able to
connect to the netbeans.info mail server.  See <a href="#next">OK, What Next</a> below
to start moderating.

<P><A NAME="next"><h2>OK, What Next ?</h2></A>

<BR>Once your client is configured, and you can see the contents
of the moderator mailbox, you can start moderating.

<ul>
<li>Choose a msg.  You'll see a standard message from the list server, with 2
long email addresses in the body - one address including the word "accept", and
one including "reject".  Attached to this is the message that has been
moderated.

<p><li>View the attachment, and establish if it is a real message,
or spam, or something inappropriate for the list.  Remember some "real" messages
are still not appropriate for delivery to lists - eg an unsubscribe reqeust should
be rejected.  <I><B>Please be careful with your evaluation!</B></I>  If in doubt,
leave the message alone.

<p><li>If it is a valid message, you need to send a (blank) message to the
"accept" address.  Exactly how to do this depends on your mail client - in
Mozilla, Netscape and Thunderbird it is as easy as clicking on the accept link
displayed in the message.  Whatever you do, carefully verify that the address
you are about to send to is the real "accept" address, and only the real accept
address (no cc's), and send the message.

<p><li>If it is spam, please move (drag-and-drop) the message to the Spam folder
- we are tracking spam to provide data to CollabNet.  You do not need to explicitly
reject a spam message - without a response, the server will automatically reject
the message after 7 days.

<P><LI>If it is a real message, but somehow not appropriate for the list it was
posted to, you might want to reject it, but give an explanation to the original
poster.  To do this, send a message to the "reject" address (eg by clicking the
reject link in the message), and add your message between the following special
markers :

<p><tt>&nbsp;&nbsp;%%% Start comment
<br>&nbsp;&nbsp;%%% End comment</tt>

<p>Anything you write between these lines will be sent to the
original poster, so you could explain why you are disapproving
the msg and suggest an alternative list for them to post to.

<p>Here's an example I use to reject unsubscription requests, feel free to
copy-paste it as a template :

<p><pre>%%% Start comment
Hello,

I'm a moderator for the netbeans.org mailing lists.  I've just rejected the
"unsubscribe" message you posted recently, as such messages should not go
the lists themselves.

There are unsubscribe links on the main lists page :

   https://netbeans.org/community/lists/top.html

If you're having trouble, please see the the list FAQ, and the unsubscribe
guide :

   http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ#section-NetBeansUserFAQ-MailingLists
   https://netbeans.org/community/lists/unsubscribe.html

If you're still having trouble please get back to me with details.

Thanks, and
Best Regards,
--

%%% End comment

</pre>

<p><li><b>This step is critical!</B>  Once you're done, no matter whether you
approved or rejected the message, <I>DELETE the message you have just
processed</I>. This way it is cleared from the queue, and the next moderator to
come along doesn't need to look at it again.

<p>
</ul>

<p>That's it.  Thank you for helping!  Remember, if in doubt, just leave the
message along, someone else can evaluate it.  Any problems or questions
please contact <script language="JavaScript" type="text/javascript">
<!--
var user = "&#119;&#101;&#98;&#109;&#97;&#115;&#116;&#101;&#114;";
var domain = "&#110;&#101;&#116;&#98;&#101;&#97;&#110;&#115;&#46;&#111;&#114;&#103;";
var at = "&#x40;";
document.write('<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;' + user + at + domain + '">&#119;&#101;&#98;&#109;&#97;&#115;&#116;&#101;&#114;&#64;&#110;&#101;&#116;&#98;&#101;&#97;&#110;&#115;&#46;&#111;&#114;&#103;</a>');
//-->

</script>
<noscript>
<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#119;&#101;&#98;&#109;&#97;&#115;&#116;&#101;&#114;&#x40;&#110;&#101;&#116;&#98;&#101;&#97;&#110;&#115;&#46;&#111;&#114;&#103;">&#119;&#101;&#98;&#109;&#97;&#115;&#116;&#101;&#114;&#64;&#110;&#101;&#116;&#98;&#101;&#97;&#110;&#115;&#46;&#111;&#114;&#103;</a>
</noscript>

<p><a name="spam"><h2>Spam</h2></a>
<br>It wont take long before you realise the huge volume of spam that moderating
stops getting to the lists.  That's good for the lists, but of course more messages
for moderators to review.

<p>More content to come.


</body>
</html>
