Chronophage.net Blog

Tag: UNIX 101

Postfix MySQL and You!

by Nick on Oct.30, 2009, under Administration, E-Mail, News

Postfix is surprisingly flexible. When I initially set it up two years ago, I set it up to reference a database, but I had a flaw in my logic. Basically, Postfix had no idea if a domain was marked active or inactive in the database. All it knew was whether a domain was in the database or not. Postfix has a default query, that looks for key information. However, you can supercede it in your config files. So I simply commented out the old variables that it passed to the default query, and wrote a new one:

user = DB_USER
password = supersecretpassword
hosts = 127.0.0.1
dbname = DB_NAME
table = domain
#select_field = domain < -- old version, commented out
#where_field = domain <-- old version, commented out
#New Query:
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = false and active = true

Yes, I have backupmx enabled, even though that’s a titanically bad idea, and I would never use it. Why is it a bad idea to fuction as a Backup MX server? Because spammers don’t play by the RFCs and often send spam to lower weighted MX records in an attempt to bypass spam protection.

But I never know what people may ask for in the future. ;)

Leave a Comment :, , , more...

Oops…

by Nick on Sep.24, 2009, under Administration, News, Sofware

This is a live and learn moment. When I did my last update, I had a lot of old libraries hanging around. I thought that portupgrade would recompile all of my ports, but it didn’t. Most had been recompiled in the interim as I had been upgrading, but Apache, well, Apache upgrades are hardly for the weak. So, when I deleted a bunch of crud laying around. I broke SUEXEC. SUEXEC is what allows scripts to be executed under my various users’ home directories. Well, a recompile and reinstall, and things are working much much faster. Always fix your architecture kids.

Leave a Comment :, , more...

I’m trying to figure out how s…

by Nick on Aug.05, 2009, under News, Twitter

I’m trying to figure out how syslogd works. Just when you think you have things figured out…

Leave a Comment :, , more...

DNS and you!

by Nick on Jul.31, 2009, under News, Security

Say what you want about Kaminsky. I mean, the man is crazy. However, being on call when your employer, a regional ISP, reboots both the primary and secondary DNS servers, makes you appreciate how important DNS is in the grand scheme of internet things. Granted, his attack is fairly novel, but yeah… I’m glad ISC makes updating BIND nice and easy.

Leave a Comment :, , , more...

DNSSEC

by Nick on Jul.09, 2009, under News, Twitter

So, I discovered that .org is signed. Unfortunately, I discovered this the hard way. I think there’s a DNSSEC bug in the version of BIND that I’m running. So time to update world on Calypso. Wee!

*UPDATE*

I upgraded to BIND 9.6.0 and all appears to be well.
I followed these instructions: http://closedsrc.org/_static/dn-articles/bind9.html
and overwrote the base install. I like to live dangerously…after testing it on one or two test machines. ;)

2 Comments :, , , more...

Jabberd2

by Nick on Jun.16, 2009, under News, Twitter

jabber-bulbJabber is…touchy. There is no margin for error.

It makes sense, as jabber seems to be a consortium of various modules that communicate via streams. It is, in a sense, a true UNIX application; each module does one thing, and passes the data on. However, since it’s such multifaceted app, it handles errors in a very simple way: One error tears down the whole system.

I set up Jabberd2 with three goals:

1) Database Backend.

2) Multi-domain support.

3) Conferencing.

Goal 1 was rather easy, just follow the config file. Goal 2 was considerably more challenging, XML is not a friendly format to the unfamiliar eye, and I had a few typos. Goal 3 was the most challenging, as getting yet another module working increased the failure chance exponentially.

I have not gotten Jabberd to log proplerly. It just seems to ignore whatever log method I set up. So, while troubleshooting, I had manually run the daemon (as the jabber user, hurray sudo -u) and try to deciphy the cryptic XML messages as the scrolled rapidly by. I think I have it sorted out, aside from logging.

I wish I had seen http://www.jms1.net/jabberd2/ when I first started. That guide has proven invaluable.

Leave a Comment :, more...

What happens when I program “On the Fly”

by Nick on Jun.11, 2009, under News, Sofware

Don Hertzfeld?So I needed a quick script to query a billing database for DSL users. The user names, of course where horribly inconsistent. I had to use a program that executed a query of the database, as I didn’t have access to the actual database. Oh, and I didn’t know any Perl at the time.

Now, I have a bad habit when writing code for myself, to use ambiguous variable names, and strange loop structures, and no comments. See if you can figure out what’s going on.

Oh, I vow never to write code like this again. ;)

#!/bin/bash

echo Audit run on $( date )
echo Audit run on $( date ) > notinbilldb.txt
echo
echo

for i in $( cat radiusdump.txt | awk '{print $1}' ); do
 	t2=""
	t2=$( echo $i | sed -e 's/\@.*$//;' | cut -f1 -d . )
	t1=$( billdb -s $t2 | grep DSL | awk '{print $3}' | sed -e 's/\.dsl//; s/^dsl//;s/\@.*$//;' )
  	t3="0"
	t4="0"
	t5="0"
	t6=""

	if [ "$t1" = "" ]; then
		t1=$( billdb -s $i | grep Email | awk '{print $3}' | sed -e 's/\@.*$//;' )
		t5="1"
	fi

	if [ "$t1" = "" ]; then
		echo $i is not in billdb.
		echo $i is not in billdb. >> notinbilldb.txt
		t4="1"
	fi
	p=$( echo $i | sed -e 's/\.dsl//; s/^dsl//;s/\@.*$//;' )
	k=""

	for k in $( echo $t1 ); do
		if [ "$p" = "$k" ]; then
			if [ "$t5" = "1" ]; then
				t6=", but only in email"
			fi
			echo $i matched $k in billdb$t6.

			t3="1"
	 	fi
	done
	if [ "$t4" = "$t3" ]; then
		echo $i is really not in billdb but was close to $t1.
        	echo $i is really not in billdb but was close to $t1. >> notinbilldb.txt
	fi
	echo --------------------------------
	echo
done
echo
echo Audit completed $( date )
echo
Leave a Comment :, , , , more...

sudo -u

by Nick on Jun.11, 2009, under News, UNIX 101

[/caption] Sometimes, especially on X.X upgrades, WordPress Automatic Update does not work. Oh, it claims to work. But it doesn’t. So you have to upgrade manually. Now, a manual upgrade is trivial in WordPress. Just download the zip (or gzipped tar,) unpack it, copy the files, go to the admin interface, and click two buttons. But what if you have multiple users, who have WordPress in their home directories? Use sudo! Sudo is a tool that administrators can use to execute commands as root. However, you can also the -u parameter to execute a command as another user. So, if I put WordPress in a neutral folder, then I can simply do this: >sudo -u username cp -r wordpress/* /home/username/www/example.com/ Voila! Nice and easy. I should script this… " name="s" />

From XKCD. Used for Advocacy

From XKCD. Used for Advocacy

From

Sometimes, especially on X.X upgrades, WordPress Automatic Update does not work.

Oh, it claims to work. But it doesn’t. So you have to upgrade manually. Now, a manual upgrade is trivial in WordPress. Just download the zip (or gzipped tar,) unpack it, copy the files, go to the admin interface, and click two buttons.

But what if you have multiple users, who have WordPress in their home directories? Use sudo!

Sudo is a tool that administrators can use to execute commands as root. However, you can also the -u parameter to execute a command as another user.

So, if I put WordPress in a neutral folder, then I can simply do this:

>sudo -u username cp -r wordpress/* /home/username/www/example.com/

Voila! Nice and easy.

I should script this…

Leave a Comment :, , more...

Chronophage E-mail Settings

by Nick on May.18, 2009, under E-Mail, News

postfixadmin_logoI host mail for a few friends and family. I use Postfix as my MTA with Dovecot as my SASL/LDA/POP/IMAP server. Users are authenticated via MySQL and PAM, so I can have local, and virtual accounts. To manage things, I user PostfixAdmin, with a few¬† tweeks to accomodate my virtual user’s file structure. Logins are either the full email address (virtual accounts) or the username.

I user a combination of SQLGrey and ClamAV and Maia(SpamAssassin frontend) for my anti-spam/anti-virus protection. SquirrelMail and RoundCube are both availible for webmail. Mutt and Alpine are installed on the server as well.

The Settings are as follows:

Main Settings:

The POP3/IMAP4  and SMTP server is mail.chronophage.net

SMTP Authentication is ON

Ports are: 110/993* 143/995* and 25/587/465* for SMTP.

After switching LDA and SASL over to Dovecot, I have magnanimously set up Sieve scripting for my valuable users. And it works for both virtual and shell accounts.
Shell accounts can use either Squirrelmail, or upload Sieve scripts via the Sieve Thunderbird plugin or place them in your .sieve folder.
Virtual accounts will either have to use Squirrelmail or a program that can speak Sieve (standard port, 2000)
Sieve scripts DO count against your quota, so be careful Virtual Users.
This is LDA level filtering, so I can’t see what it’s doing via my logs, so watch your filters!

There are a lot of Sieve scripts out there, have fun!

Procmail and Maildrop are installed on the system, and can be used for shell users via a .forward file.

Webmail:

http://mail.chronophage.net for SquirrelMail

http://mail.chronophage.net/rc for RoundCube

Postfix Admin

http://mail.chronophage.net/admin redirects to https://calypso.chronophage.net/mailadmin

Shell users should be able to log in with their email address but passwords don’t sync with local passwords.

Send me an email to change passwords.

Leave a Comment :, , , , , , more...

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Blogroll

A few highly recommended websites...

Archives

All entries, chronologically...