<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>On Ensemble : Masato Baba, Kristofer Bergstrom, Shoji Kameda and Kelvin Underwood &#187; gnu/linux</title>
	<atom:link href="http://onensemble.org/tag/gnulinux/feed/" rel="self" type="application/rss+xml" />
	<link>http://onensemble.org</link>
	<description>Neo-traditional taiko</description>
	<lastBuildDate>Mon, 14 May 2012 12:54:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sendmail / IMAP email server setup</title>
		<link>http://onensemble.org/2010/09/sendmail-imap-email-server-setup/</link>
		<comments>http://onensemble.org/2010/09/sendmail-imap-email-server-setup/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 13:00:12 +0000</pubDate>
		<dc:creator>kris</dc:creator>
				<category><![CDATA[Kris' Blog]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[dovecot imap howto]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[sendmail howto]]></category>

		<guid isPermaLink="false">http://onensemble.org/?p=878</guid>
		<description><![CDATA[Until recently, On Ensemble&#8217;s email server lived in my apartment.  By using all Free Software, we have been able to host the OnEnsemble.org website and email for the group on recycled computers, for only the cost of my internet connection.  The software is top-notch&#8230; the only limitation is knowing how to set up and administer [...]]]></description>
			<content:encoded><![CDATA[<p>Until recently, On Ensemble&#8217;s email server lived in my apartment.  By using all <a href="http://fsf.org">Free Software</a>, we have been able to host the OnEnsemble.org website and email for the group on recycled computers, for only the cost of my internet connection.  The software is top-notch&#8230; the only limitation is knowing how to set up and administer everything.  I often need some guidance and help understanding the software.</p>
<p>This is where the gnu/linux community comes in, and my friends in the Los Angeles Linux Users Group.  We meet in an IRC chatroom called #lalugs, helping each other out.  You too can hang out here and ask questions: <a href="http://www.xchat.org/download/">download Xchat</a> or <a href="http://colloquy.info/downloads.html">Colloquy</a>, join the server irc.freenode.net, and join the #lalugs channel.  My nickname there is &#8220;xuxa&#8221;.</p>
<p>My most recent challenge was to move On Ensemble&#8217;s email server services to the new server.  For this, mail master Stu Sheldon helped me out at the SCLUG meeting.</p>
<p><img class="alignnone size-medium wp-image-1284" title="stu_sheldon" src="http://onensemble.org/wp-content/uploads/2009/02/stu_sheldon-300x225.jpg" alt="stu_sheldon" width="300" height="225" /></p>
<p>The following step-by-step assumes you have a base installation of debian that is up-to-date (apt-get update, apt-get upgrade).  If you need help getting to this stage, please contact me.</p>
<p><span id="more-878"></span></p>
<p>You can see my finished sendmail.mc config file <a href="http://OnEnsemble.org/krisShare/sendmail.mc">here</a>.<br />
good source for help: mirror.actusa.net/pub/sample-files/<br />
audio file</p>
<p><strong>Intro / overview</strong> &#8211; 00:00:00</p>
<p><strong>Sendmail installation</strong> &#8211; 00:07:20</p>
<p>Become root, then:</p>
<blockquote><p><code>apt-get install sendmail</code></p>
<p><code>cd /etc/mail</code><br />
<code>vi sendmail.conf</code></p></blockquote>
<p>Change MSP_MODE from &#8220;Cron&#8221; to &#8220;daemon&#8221;</p>
<p><strong>Sendmail configuration</strong> &#8211; 00:10:25</p>
<blockquote><p><code>sendmailconfig<br />
Y<br />
N</code></p>
<p><code>(enter your mail domain name)<br />
-- for us, OnEnsemble.org (use your domain)<br />
Null client forward host? (leave blank)<br />
Smart host? (leave blank)<br />
Disable address canonification (N)<br />
Masquerade envelopes (Y)<br />
All masquerade (N)<br />
Don't masquerade local (N)<br />
Always add domain (N)<br />
Accept mail for [your domain] (Y)<br />
Alternate names (leave as default)<br />
Trusted users?  root<br />
Enable redirect option (Y)<br />
Enable UUCP addressing? (N)<br />
Enable sticky host option? (N)<br />
Enable DNS? (Y)<br />
Assume best MX is local (N)<br />
Enable the mailer table feature (Y)<br />
Use the sendmail restricted shell (Y)<br />
Message timeouts? (leave as default: 4h/5d)<br />
(N) to restart</code></p></blockquote>
<p>Everything above is explained in cf.readme.gz from sendmail-doc package.  (To get it &#8220;apt-get install sendmail-doc&#8221;, then read with &#8220;zless /path/to/cf.readme.gz&#8221;.)</p>
<p><strong>Editing sendmail.mc</strong> &#8211; 00:19:54</p>
<blockquote><p><code>cp sendmail.mc sendmail.mc.old</code><br />
<code>vi sendmail.mc</code></p></blockquote>
<p>Find the DAEMON_OPTIONS line containing &#8220;Port=smtp&#8221;.  Remove the following bit, as well as the comma that proceeds it: <code>Addr=127.0.0.1</code></p>
<p>Find the confPRIVACY_FLAGS bit and remove all the privacy flags, adding only `goaway&#8217;.  When you&#8217;re done, it should look like this:<br />
<code>define(`confPRIVACY_FLAGS, `goaway')dnl</code></p>
<p>Find the confCONNECTION_RATE_THROTTLE line and change &#8220;15&#8243; to &#8220;25&#8243;.  Change the next line, the confCONNECTION_RATE_WINDOW_SIZE from &#8220;10m&#8221; to &#8220;2m&#8221;.</p>
<p>We now want to delete the sections dealing with dialup connections.  The first lines of the dialup section should look something like this:<br />
<code>dnl #<br />
dnl # If you're on a dialup link, you should enable this - so sendmail<br />
dnl # will not bring up the link (it will queue mail for later)</code></p>
<p>Run sendmailconfig to rebuild the configuration and implement the changes:</p>
<blockquote><p><code>sendmailconfig<br />
(Y) to reload<br />
ps -ef</code></p></blockquote>
<p>In the output of the &#8220;ps&#8221; command above, you should see two sendmail processes listed.</p>
<blockquote><p><code>telnet localhost 25<br />
ehlo test<br />
quit</code></p></blockquote>
<p>If the above outputs a lit of things, we have verified that sendmail is up and running.</p>
<p><strong>Configuring authentication</strong> &#8211; 00:27:38</p>
<p>Some of the following steps were required because my server had postfix installed previously.</p>
<blockquote><p><code>cd /usr/lib/sasl2/</code></p>
<p><code>vi Sendmail.conf</code></p></blockquote>
<p>Change auto_transition to &#8220;false&#8221;.<br />
QUESTIONFORSTU: this is &#8220;true&#8221; in my Sendmail.conf file<br />
Find the line called mech_list and remove everything except &#8220;LOGIN PLAIN&#8221;</p>
<p>System was previously setup to run postfix so Stu did:</p>
<blockquote><p><code>rm smtpd.conf<br />
/etc/init.d/saslauthd restart<br />
etc/init.d/sendmail restart</code></p>
<p><code>telnet localhost 25<br />
ehlo test<br />
quit</code></p></blockquote>
<p><strong>Enable SASL for sendmail</strong> &#8211; 00:31:00</p>
<blockquote><p><code>cd /etc/mail/<br />
sendmailconfig<br />
(Y)<br />
(Y)<br />
Reload the running sendmail<br />
(Y)<br />
"To enable sendmail to use STARTTLS, you need to..."</code></p></blockquote>
<p>We want to do the three steps it describes.</p>
<p>Copy the suggested line.</p>
<blockquote><p><code>vi sendmail.mc</code></p></blockquote>
<p>Insert the line at the bottom, right after &#8220;MAILER(smtp)dnl&#8221;</p>
<p>We also need another include for SASL, so immediately after the line you pasted, also add:<br />
<code>include (`/etc/mailsasl/sasl.m4')dnl</code></p>
<blockquote><p><code>sendmailconfig</code><br />
(Y)<br />
(Y)</p></blockquote>
<p>This time you should get no warning.</p>
<blockquote><p><code>telnet localhost 25<br />
ehlo test</code></p></blockquote>
<p>In the output here, you should see &#8220;auth&#8221; and &#8220;starttls&#8221;.</p>
<blockquote><p><code>quit</code></p></blockquote>
<p><strong>Dovecot installation and configuration</strong> &#8211; 00:37:00</p>
<p>At this point, we should be able to send and receive email at a server to server level.  sendmail requires a Local Delivery Agent to put the messages in a particular inbox so a user can access it.  procmail is the default.  We want our users to be able to get their email through an IMAP connection, so we&#8217;ll be using dovecot.</p>
<blockquote><p><code>apt-get install dovecot-imapd dovecot-pop3d</code></p>
<p><code>cd /etc/dovecot<br />
vi dovecot.conf</code></p></blockquote>
<p>Find the &#8220;protocols&#8221; line (relatively near the top) and edit it to look like this:</p>
<p><code>protocols = imap imaps pop3 pop3s</code></p>
<p>Find the disable_plaintext_auth line and set it to &#8220;no&#8221; so it looks like this:</p>
<p><code>disable_plaintext_auth = no</code></p>
<blockquote><p><code>/etc/init.d/dovecot start</code></p>
<p><code>ps -ef</code></p></blockquote>
<p>The output should show &#8220;dovecot&#8221;, &#8220;pop&#8221;, &#8220;imap&#8221;, and &#8220;sasl&#8221;.</p>
<p><strong>Maildir configuration</strong> &#8211; 00:42:32</p>
<p>Next we need to set up maildir so that mail will live in users&#8217; home directories.</p>
<p>Visit <code>mirror.actusa.net/pub/sample-files/</code> and look for the file: procmail.maildir.sample</p>
<p>Copy the contents of that file to a procmailrc config file in /etc/.</p>
<blockquote><p><code>cd /etc/<br />
vi promailrc</code><br />
(paste and save)</p></blockquote>
<p>We now want to create the default mail directory in the /root directory and then set things up so that new users get that Maildir folder automatically.</p>
<blockquote><p>cd<br />
maildirmake.dovecot ~/Maildir<br />
cp -Rpv Maildir /etc/skel/<br />
cd /etc/skel/</p></blockquote>
<p><strong>ClamAV installation and configuration</strong> &#8211; 00:53:24</p>
<p>We now have a server that can send and receive mail and that mail is now being delivered to user inboxes.  Next we need to add antivirus and spam blocking.  &#8220;clamav&#8221; runs as a sendmail filter or &#8216;milter&#8217;.</p>
<blockquote><p><code>apt-get install clamav clamav-milter arj unzoo daemon</code></p></blockquote>
<p>failed!  Because sendmail.cf hasn&#8217;t been configured yet to use clamav.</p>
<p>Paste the following line into sendmail.mc, after the &#8220;include&#8221; lines we added before.  (This line is copied from <a href="http://mirror.actusa.net/pub/sample-files/">Stu&#8217;s website sample files</a>, specifically, the &#8220;sendmail.mc.sample&#8221; file.)</p>
<p><code>INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav/clamav-milter.ctl, F=T, T=S:4m;R:4m')dnl</code></p>
<blockquote><p><code>vi /etc/mail/sendmail.mc</code><br />
(paste)</p>
<p><code>sendmailconfig</code><br />
(Y)</p>
<p><code>/etc/init.d/clamav-milter stop<br />
/etc/init.d/clamav-milter start</code></p>
<p><code>freshclam</code></p></blockquote>
<p>The freshclam command should show clamav is up to date.</p>
<p><strong>SpamAssassin installation and configuration</strong> &#8211; 1:03:55</p>
<p>We now have antivirus software installed and running.  We need spamassassin to check and filter the incoming mail.</p>
<blockquote><p><code>apt-get install spamassassin spamc libmail-spf-query-perl libnet-dns-perl, libio-string-perl libnet-ident-perl libio-socket-ssl-perl</code></p></blockquote>
<blockquote><p><code>cd /etc/default<br />
vi spamassassin</code></p></blockquote>
<p>Enable the spamassassin daemon by setting the ENABLED line to &#8220;1&#8243;.</p>
<blockquote><p><code>ENABLED=1<br />
(save the file)<br />
/etc/init.d/spamassassin start</code></p></blockquote>
<p>We now need to enable spamassassin for all users.  We&#8217;ll get procmailrc.spamc.sample from <a href="http://mirror.actusa.net/pub/sample-files/">Stu&#8217;s site</a>.</p>
<blockquote><p><code>cd /home/(your user name)<br />
wget http://mirror.actusa.net/pub/sample-files/procmailrc.maildir.sample<br />
mv procmailrc.maildir.sample /etc/skel/.procmailrc</code></p></blockquote>
<p><strong>Need Debian volatile repositories</strong></p>
<p>Add the following Debian volatile repos to /etc/apt/sources.list (from stu&#8217;s <a href="http://mirror.actusa.net/pub/sample-files/debian.sources.list">debian-sources.list</a>)<br />
# Debian Volatile<br />
deb http://mirror.actusa.net/debian-volatile stable/volatile main contrib non-free<br />
deb http://debian.actusa.net/debian-volatile stable/volatile-sloppy main non-free contrib</p>
<blockquote><p><code>/etc/init.d/clamav-milter stop<br />
apt-get update<br />
apt-get dist-upgrade<br />
/etc/init.d/sendmail start<br />
ps -ef<br />
</code></p></blockquote>
<p>The &#8220;ps&#8221; command should show clamav is running.</p>
<p><strong>Email testing</strong> &#8211; 1:22:10</p>
<p>Now for testing&#8230;</p>
<blockquote><p>ifconfig</p></blockquote>
<p>Use the &#8220;ifconfig&#8221; command to check the local IP address of the current machine (192.168.1.112 in my case).</p>
<blockquote><p><code>telnet 192.168.1.112 25 (change IP to be your machine's local IP address)<br />
ehlo bob<br />
MAIL FROM: stu@domain.com (use an outside email address - you@yahoo.com, for example)<br />
RCPT TO: xuxa@myemail.com (use the email address you're currently setting up)<br />
From:<br />
To:<br />
Subject:<br />
hiya!  This is a test email!<br />
.<br />
telnet localhost 110<br />
user xuxa (use your user name)<br />
pass bozo (use your password)<br />
retr 1<br />
</code></p></blockquote>
<p>The &#8220;retr 1&#8243; command should show the email message you just sent.</p>
<blockquote><p><code>stat<br />
</code></p></blockquote>
<p>The &#8220;stat&#8221; command should show clamav running. QUESTIONFORSTU!  But no spamassassin yet.</p>
<blockquote><p><code>dele 1<br />
quit<br />
</code></p></blockquote>
<p><strong>SpamAssassin testing</strong> &#8211; 1:28:00</p>
<p>Now we figure out why spamassassin wasn&#8217;t there&#8230;</p>
<blockquote><p><code>cd /etc/default<br />
vi spamassassin<br />
</code></p></blockquote>
<p>Double-check that spamassassin is enabled &#8220;ENABLED=1&#8243;</p>
<blockquote><p><code>/etc/init.d/spamassassin<br />
ps -ef<br />
</code></p></blockquote>
<p>&#8220;spamd&#8221; should show up in the output of the ps command.</p>
<p>Try sending mail again.  Stu copied the body of a spam message to see that spamassassin would catch it.</p>
<blockquote><p><code>telnet localhost 25<br />
</code></p></blockquote>
<p><strong>Enabling virtusertable</strong></p>
<p>If we want to route multiple email addresses to a single user, we need to set up &#8220;virtusertable&#8221;.</p>
<blockquote><p><code>vi /etc/mail/virtusertable </code></p></blockquote>
<p>input the aliases you would like in the format:</p>
<p><code>emailaddress@domain.com (tab)     username</code></p>
<p>Mine looks something like:</p>
<p><code>kris@domain.com           xuxa<br />
kristofer@domain.com    xuxa<br />
krisb@domain.com         xuxa</code></p>
<p>Note, however that you cannot do something like this in virtusertable:</p>
<p><code>feedback@domain.com          bob@gmail.com</code></p>
<p>To re-send emails outside the system, you would need to do this in virtusertable:</p>
<p><code>feedback@domain.com          bob</code></p>
<p>And then in your aliases file:</p>
<p><code>bob:bob@gmail.com</code></p>
<p>Next, enable the virtusertable file in /etc/mail/sendmail.mc.  Toward the end of the file, add &#8220;FEATURE(`virtusertable&#8217;)dnl&#8221; to the LOCAL_CONFIG section.  Mine looks like this:</p>
<p>LOCAL_CONFIG<br />
FEATURE(`masquerade_envelope&#8217;)dnl<br />
LOCAL_CONFIG<br />
Cwonensemble.org<br />
FEATURE(`virtusertable&#8217;)dnl<br />
FEATURE(`use_cw_file&#8217;)dnl<br />
<strong>Transfering old mail to new server</strong></p>
<p>use imapsync</p>
<p>imapsync &#8211;authmech1 PLAIN &#8211;authmech2 PLAIN &#8211;host1 localhost &#8211;user1 xuxa &#8211;passfile1 /etc/passfile1 &#8211;host2 jikatabi &#8211;user2 xuxa &#8211;passfile2 /etc/passfile1</p>
<p><strong>Allowing local network machines to send mail through server</strong></p>
<p>I was able to immediately connect with mutt to the new server but received an error message when trying to send messages.  The server complained that it could not verify the IP address of my workstation.  I needed to uncomment the following in my /etc/mail/access file:</p>
<blockquote><p>Connect:192.168                 RELAY</p></blockquote>
<p>Then run &#8220;make&#8221; as root in the /etc/mail/ directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://onensemble.org/2010/09/sendmail-imap-email-server-setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Software-based calendaring &#8212; manage your life and your band&#8217;s!</title>
		<link>http://onensemble.org/2008/12/free-software-based-calendaring/</link>
		<comments>http://onensemble.org/2008/12/free-software-based-calendaring/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 08:28:14 +0000</pubDate>
		<dc:creator>kris</dc:creator>
				<category><![CDATA[Kris' Blog]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[pcal]]></category>
		<category><![CDATA[text-file calendar]]></category>

		<guid isPermaLink="false">http://onensemble.org/?p=995</guid>
		<description><![CDATA[A number of friends have asked me recently (hi Rachel and Jason!) what I used to manage my and On Ensemble&#8217;s calendars.  The following post explains my calendaring system based on Free Software, using easily-portable text files. The old way I used a Palm Pilot for years and loved having my calendar along with me [...]]]></description>
			<content:encoded><![CDATA[<p>A number of friends have asked me recently (hi Rachel and Jason!) what I used to manage my and On Ensemble&#8217;s calendars.  The following post explains my calendaring system based on <a href="http://fsf.org">Free Software</a>, using easily-portable text files.</p>
<p><a href="http://onensemble.org/wp-content/uploads/2008/12/pcal_calendar_example.jpg"><img class="alignnone size-medium wp-image-996" title="pcal_calendar_example" src="http://onensemble.org/wp-content/uploads/2008/12/pcal_calendar_example.jpg" alt="" width="300" height="224" /></a></p>
<p><span id="more-995"></span></p>
<p><strong>The old way</strong></p>
<p>I used a Palm Pilot for years and loved having my calendar along with me at all times.  But the Palm was difficult to interface with gnu/linux (at that time) and all my calendar and schedule data was in Palm&#8217;s proprietary format.  My Palm was eventually stolen and it felt like a good time to switch to a more flexible system.  I tried a software-based solution (<a href="http://projects.gnome.org/evolution/">Evolution</a> at that time) but worried about the longevity of my information.  Would I be able to transfer my calendar to the next software I want to use?  So I used a simple text file for a while, basically a long list of dates and events, but I missed the graphical display of a calendar.</p>
<p><strong>The new way: pcal</strong></p>
<p>I then discovered <a href="http://pcal.sourceforge.net/">pcal</a>, a command-line program to generate pdf, html, and postscript calendars from a text file.  It&#8217;s dreamy!  Now I simply print out as many months of my calendar as I want and carry that around with me (usually 6 pages, double-sided for this month plus 11).  No batteries, and it&#8217;s not a big deal if I misplace it.  I make notes directly on the calendar when I&#8217;m away from my computer and enter the information later.  I can access the calendar text file easily through ssh from any computer connected to the internet.  I can process the file with standard unix tools to do fun things.  Backups are easy and efficient.</p>
<p>pcal is maintained by one of the most helpful, friendly people I&#8217;ve run into: Bill Marr.  He has been extremely helpful and even created a <a href="http://pcal.sourceforge.net/scripts.html">scripts</a> section of the pcal website to host the scripts I&#8217;ve created.</p>
<p><strong>Daily Reminders</strong></p>
<p>One of my favorite features of this calendaring system is a script that runs daily to look through my calendar and send me an email with that day&#8217;s events.  It also includes tomorrow&#8217;s events, and events one week in advance (and can be set up to do any combination of days one wants).  The emails look something like this:</p>
<blockquote><p>TODAY&#8217;S EVENTS (Sep 30, 2007):</p>
<p>30/09/07                Hiro&#8217;s parents leave?</p>
<p>TOMORROW&#8217;S EVENTS (Oct 01, 2007):</p>
<p>01/10/07        11:30-18        Work at JACCC ticket office</p>
<p>ONE WEEK FROM TODAY (Oct 07, 2007):</p>
<p>07/10/07                Jason lesson at practice space<br />
07/10/07                Maz to go to Japan?<br />
07/10/07                Shoj out with Hiroshima</p></blockquote>
<p>If you&#8217;ve got pcal installed (on debian, I simply ran &#8220;apt-get install pcal&#8221;), the system assumes your .calendar file lives in your home directory.  Read the <a href="http://pcal.sourceforge.net/pcal-help.html">pcal documentation</a> to get started and to add a few event entries.</p>
<p>To try out my daily reminders script, you&#8217;ll need to download the script, put it where it needs to be, and give it the proper permissions.</p>
<p>1) Download the script by clicking <a href="http://onensemble.org/wp-content/uploads/2008/12/my_daily_reminder_script.sh">my_daily_reminder_script</a>.</p>
<p>2) Put the script in the /usr/local/bin directory</p>
<p>3) The permissions must allow the program to be executed.  As root, run &#8220;chmod 750 /usr/local/bin/my_daily_reminder_script.sh&#8221; and chown &lt;your username&gt; /usr/local/bin/my_daily_reminder_script.sh&#8221;</p>
<p>4) Read through the script and adjust the configurations as necessary (changing the email address to be your own, etc)</p>
<p>5) Test the script by running it: /usr/local/bin/my_daily_reminder_script.sh</p>
<p>You should receive an email.  Make sure there are entries for today, tomorrow, and one week from today in your .calendar file so the three searches performed in the script will all return something.  If the script is working properly, you should receive an email containing the events.</p>
<p>Once the script appears to be working properly, put an entry in crontab (crontab -e) to run the script at a set time every day.  Mine runs the script at 4am and looks like this:</p>
<blockquote><p>xuxa@chappa:/tmp$ crontab -l<br />
00 4 * * * /usr/local/bin/my_daily_reminder_script.sh</p></blockquote>
<p><strong>Group calendar</strong></p>
<p>The next great feature of the system is that I use it to generate On Ensemble calendars in html format and upload them to OnEnsemble.org where the group can see them.  The system also generates an email to all the members of the group and our agent that lists the dates on which events have changed and has a PDF version of the calendar attached.  Cool, no?</p>
<p>I incorporated the email announcement and OnEnsemble.org calendar update functions into a script that also automates the things I do often with pcal, namely viewing, printing, and emailing my calendar to my partner.</p>
<p>Group-relevant entries in the .calendar file include a searchable tag (&#8220;ON&#8221;, for On Ensemble, in our case).  The script first pulls out the tagged entries (with grep) and then uses pcal to generate the group&#8217;s calendar.</p>
<p>I added a few additional features to the script (options for displaying, printing, emailing the calendar to my partner, etc).  The full script is called <a href="http://onensemble.org/wp-content/uploads/2008/12/cgen.sh">cgen</a> for (calendar generate).</p>
<p>Happy hacking!  Please let me know in comments below if you have any questions or suggestions!</p>
]]></content:encoded>
			<wfw:commentRss>http://onensemble.org/2008/12/free-software-based-calendaring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

