Blog Pseudoaccidentale

2008-11-24

Oddmuse Wiki in Greek

The Oddmuse Wiki engine has been updated by Alex, to include support for the Greek language.

When I started using the Oddmuse Wiki for my personal notes a while back, I was impressed by the easy installation steps, and the collection of supported Oddmuse extensions. Now that the Greek language support I prepared has been committed to the main Oddmuse repository I am very pleased that Greek people can install their own fully localized version of the Oddmuse Wiki engine.

Oddmuse is one of the Wiki engines that are simple to install, easy to use, and very customizable. If you happen to install the Greek translation of Oddmuse, and you find anything that is mistranslated, or some string whose translation can be improved, please feel free to drop me a note at one of my email addresses.

2008-11-15

Gnus message scoring actually works

From the let-the-flames-roll-baby department:

<keramida> Wow, Gnus auto-scoring of email & news messages actually works(TM)
<keramida> It automatically deleted a post in my nnml:mail.mercurial folder
because it matched the rule:
<keramida> ("Gentoo" -200 nil s) [gnus.SCORE] -> ~/.gnus.SCORE
<keramida> Heh :)

Helpful Spammers

Filed under: Computers, Email, Spam — keramida @ 04:08:57
Tags: , ,

The “FreeBSD Greek Documentation Project” uses a mailing list for commit notifications and general patch discussion. I am the moderator of the “freebsd-doc-el” and I noticed that we get a lot of unsolicited email advertising the seminar organized by “Image A Seminars“.

The posts include the typical opt-out notice that spammers like adding to their messages, but I suspect it is mostly useful as a trap for harvesting real addresses, since we never actually opted in for this particular series of spam messages.

The full text of the spam messages that they usually send looks like this:

Typical spam message from "Image A Seminars"

What is admirably helpful about these spammers is that they always send their spam email through the same DSL link, using a static IP address! I have been gathering some of the spam messages from this specific Greek spammer for a while now. They all originate from static062038157163.dsl.hol.gr. Their message headers consistently point at this host again and again:

Received: from image-a.gr (static062038157163.dsl.hol.gr [62.38.157.163])
        by akuma.hellug.gr (8.14.3/8.14.3/Debian-4) with ESMTP id
        mA8I5fTj001044 for <unix-admin-gr-owner@lists.hellug.gr>;
        Sat, 8 Nov 2008 20:05:49 +0200
Received: (qmail 8886 invoked by uid 508); 8 Nov 2008 19:37:37 +0200
Received: from unknown (HELO image-a) (info@image-a.gr@192.168.0.8)
        by image-a.gr with SMTP; 8 Nov 2008 19:37:37 +0200

Received: from image-a.gr (static062038157163.dsl.hol.gr [62.38.157.163])
        by akuma.hellug.gr (8.14.3/8.14.3/Debian-5) with ESMTP id
        mAEN0Mkj008157 for <freebsd-doc-el-owner@lists.hellug.gr>;
        Sat, 15 Nov 2008 01:00:31 +0200
Received: (qmail 2502 invoked by uid 508); 15 Nov 2008 01:35:27 +0200
Received: from unknown (HELO image-a) (info@image-a.gr@192.168.0.8)
        by image-a.gr with SMTP; 15 Nov 2008 01:35:27 +0200

So I just went ahead and installed an entry to the /etc/mail/access file of the two mail servers used by HELLUG:

# Image A Seminars, has been spamming anyone and everything under the
# sun with their `seminar announcements'.  The funny part is that they
# do this from a static DSL line, using the same IP all the time!
# -- keramida, 2008-11-13 05:30 EET
static062038157163.dsl.hol.gr   550 We do not accept mail from spammers

This is, of course, just a temporary measure, and it blocks far too much (i.e. it also blocks anyone from image-a.gr from subscribing to or posting to the public mailing lists of HELLUG. I doubt they are very interested in this sort of thing though.

Hellas Online will also be notified for their spamming activities, in a few hours. They may be able to pull more effective strings, and save a much greater part of the Greek Internet from image-a.gr spam.

2008-11-04

Extending ERC with Emacs Lisp

ERC is an IRC client written in Emacs Lisp. This makes ERC very easy to extend, customize and otherwise adapt to your personal style.

A nice features of the standard ERC distribution is that you can extend the set of commands available on your IRC prompt by writing short Emacs Lisp functions. When you define a function called “erc-cmd-XXX” it instantly becomes available as an IRC command.

One of the first custom commands that I wrote using this feature of ERC was a “/WII” command. The “/whois” command is one of the commands that I use a lot, so writing a shorter command is nice. The Emacs Lisp code that adds this command to ERC is quite small too:

(defun erc-cmd-WII (nick &rest ignore)
  "`/WHOIS' command with extra user information."
  (erc-send-command (mapconcat #'identity
                       (list "WHOIS" nick nick) " ")))

After testing this and saving it to my ERC startup code, I added another one. An “/identify” command that sends my password to NickServ:

(defun erc-cmd-IDENTIFY (password &rest ignore)
  "Short-hand alias for `/msg NickServ identify PASS'."
  (erc-send-command (mapconcat #'identity
                       (list "identify" password) " ")))

The next few commands were a tiny bit more “complex” Emacs Lisp code, because they should accept a variable number of arguments. They are my short-hand aliases “/CS“, “/MS“, and “/NS“, for the “/CHANSERV“, “/MEMOSERV“, and “/NICKSERV” service-related commands:

(defun erc-cmd-CS (&rest args)
  "Short alias for `/chanserv ARGS'."
  (let ((command-args (append (list "CHANSERV") args)))
    (let ((chanserv-command (mapconcat #'identity command-args " ")))
      (erc-send-command chanserv-command))))

(defun erc-cmd-MS (&rest args)
  "Short alias for `/memoserv ARGS'."
  (let ((command-args (append (list "MEMOSERV") args)))
    (let ((memoserv-command (mapconcat #'identity command-args " ")))
      (erc-send-command memoserv-command))))

(defun erc-cmd-NS (&rest args)
  "Short alias for `/nickserv ARGS'."
  (let ((command-args (append (list "NICKSERV") args)))
    (let ((nickserv-command (mapconcat #'identity command-args " ")))
      (erc-send-command nickserv-command))))

Typing these new commands in a *scratch* buffer and evaluating them while ERC is running in another buffer of the same session makes them immediately accessible as IRC commands. Testing variations of these commands is much much easier when you can develop, test and save the commands right there, within a single Emacs session :-)

Blog at WordPress.com.