Bookmark and Share

Set up an IRC server using ngircd

This is a lightweight IRC server without the extra features. From the developers: "Next generation IRC Server ngircd is a IRC Daemon for small or private networks. It does not contain all the functions like the professional ones, e.g services. It is written from scratch and is not based upon the original IRCd like many others."

Install ngircd - on debian based systems: apt-get install ngircd

Edit the configuration file, on debian based systems it's: /etc/ngircd/ngircd.conf

Here's an example:

# Server name in the IRC network, must contain at least one dot
# (".") and be unique in the IRC network. Required!
Name = GNU/Linux IRC Server

# Info text of the server. This will be shown by WHOIS and
# LINKS requests for example.
Info =

# Global password for all users needed to connect to the server
Password =

# Information about the server and the administrator, used by the
# ADMIN command. Not required by server but by RFC!
AdminInfo1 =
AdminInfo2 =
AdminEMail =

# Ports on which the server should listen. There may be more than
# one port, separated with ",". (Default: 6667)
Ports = 6667

# IP address on which the server should listen. (Default: empty,
# so the server listens on all IP addresses of the system)
Listen =

# Text file with the "message of the day" (MOTD). This message will
# be shown to all users connecting to the server:
MotdFile = /etc/ngircd/ngircd.motd

# A simple Phrase (<256 motdphrase = "Hello. This is the Debian default MOTD sentence" serveruid =" 65534" servergid =" 65534" pidfile =" /var/run/ngircd/ngircd.pid"> seconds of inactivity the server will send a
# PING to the peer to test whether it is alive or not.
PingTimeout = 120

# If a client fails to answer a PING with a PONG within
# seconds, it will be disconnected by the server.
PongTimeout = 20

# The server tries every seconds to establish a link
# to not yet (or no longer) connected servers.
ConnectRetry = 60

# Should IRC Operators be allowed to use the MODE command even if
# they are not(!) channel-operators?
OperCanUseMode = yes

# Maximum number of simultaneous connection the server is allowed
# to accept (<=0: unlimited):
MaxConnections = 250

# Maximum number of simultaneous connections from a single IP address
# the server will accept (<=0: unlimited):
MaxConnectionsIP = 50

# Maximum number of channels a user can be member of (<=0: no limit):
MaxJoins = 50

[Operator]
# [Operator] sections are used to define IRC Operators. There may be
# more than one [Operator] block, one for each local operator.

# ID of the operator (may be different of the nick name)
Name =

# Password of the IRC operator
Password =

[Server]
# Other servers are configured in [Server] sections. If you
# configure a port for the connection, then this ngircd tries to
# connect to to the other server on the given port; if not it waits
# for the other server to connect.
# There may be more than one server block.
#
# Server Groups:
# The ngIRCd allows "server groups": You can assign an "ID" to every
# server with which you want this ngIRCd to link. If a server of a
# group won't answer, the ngIRCd tries to connect to the next server
# in the given group. But the ngircd never tries to connect to two
# servers with the same group ID.

# IRC name of the server
;Name = irc2.debian.org

# Internet host name of the peer
;Host = connect-to-host.the.net

# Port of the server to which the ngIRCd should connect. If you
# assign no port the ngIRCd waits for incoming connections.
;Port = 6666

# Own password for the connection. This password has to be configured
# as "PeerPassword" on the other server.
;MyPassword = MySecret

# Foreign password for this connection. This password has to be
# configured as "MyPassword" on the other server.
;PeerPassword = PeerSecret

# Group of this server (optional)
;Group = 123

[Channel]
# Pre-defined channels can be configured in [Channel] sections.
# Such channels are created by the server when starting up and even
# persist when there are no more members left.
# Persistent channels are marked with the mode 'P', which can be set
# and unset by IRC operators like other modes on the fly.
# There may be more than one [Channel] block.

# Name of the channel
Name =

# Topic for this channel
Topic =

# Initial channel modes
;Modes = tn

# -eof-

To make the server accessible outside your LAN open port 6667 on your firewall/router. I highly encourage setting a strong global server password if you choose to do this. Requires a static IP or dynamic dns.

mutt with gmail, gpg encryption, and a signature

First step to setting up mutt with your gmail - make sure imap access is enabled in your gmail settings. Now let's configure the ~/.muttrc file. Here's an example basic setup (taken from shreevatsa.wordpress.com):

set smtp_url = "smtp://accountname@smtp.gmail.com:587/"
set smtp_pass = "XXX"
set from = "accountname@gmail.com"
set realname = "Your Name"

set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed="+[Gmail]/Drafts"

set header_cache=~/.mutt/cache/headers
set message_cachedir=~/.mutt/cache/bodies
set certificate_file=~/.mutt/certificates

set move = no
set sort = 'threads'
set sort_aux = 'last-date-received'
set imap_check_subscribed

ignore "Authentication-Results:"
ignore "DomainKey-Signature:"
ignore "DKIM-Signature:"
hdr_order Date From To Cc

Next let's add gpg support, encryption is good... Add this to your ~/.muttrc file (be sure to replace my key ID with your own):

set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x7890D0B4 -- -r %r -- %f"
set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x7890D0B4 -- -r %r -- %f"
set pgp_import_command="gpg --no-verbose --import -v %f"
set pgp_export_command="gpg --no-verbose --export --armor %r"
set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
set pgp_autosign=yes
set pgp_sign_as=0x7890D0B4
set pgp_replyencrypt=yes
set pgp_timeout=1800
set pgp_good_sign="^gpg: Good signature from"

Here's some info on encrypting email.

And finally, let's add a custom signature. Create a file to store the signature in. I used ~/.signature

The text in this file will be your sig. Add a line referencing the file in your ~/.muttrc file:

set signature="~/.signature"

Enjoy using gmail in your terminal!