Archive for the ‘Linux’ Category
CentOS 5.5, exim, dovecot with MySQL & SquirrelMail
So this is a little guide I pieced together from various sources on the internet, hopefully it helps someoone when making a similar setup.
Could not find these packages in the centOS repository, so grabbed these from atrpms http://packages.atrpms.net/dist/el5/exim/
# rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms
# yum install dovecot squirrelmail;
Setup mysql database and create tables
# mysql -u root -p
mysql> CREATE DATABASE maildb;
mysql> grant all on maildb.* to mail@localhost identified by 'mail'
mysql> flush privileges;
CREATE MYSQL TABLES
CREATE TABLE domains (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
fqdn VARCHAR(250) NOT NULL,
type ENUM('local','relay') NOT NULL DEFAULT 'local',
description VARCHAR(250) NULL,
active TINYINT(1) NOT NULL DEFAULT 0,
created TIMESTAMP(14) NOT NULL DEFAULT NOW(),
modified TIMESTAMP(14) NULL
);
CREATE TABLE mailboxes (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
domain_id INT(10) NOT NULL,
local_part VARCHAR(250) NOT NULL,
password VARCHAR(50) NULL,
description VARCHAR(250) NULL,
active TINYINT(1) NOT NULL DEFAULT 0,
created TIMESTAMP(14) NOT NULL DEFAULT NOW(),
modified TIMESTAMP(14) NULL
);
CREATE TABLE aliases (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
domain_id INT(10) NOT NULL,
local_part VARCHAR(250) NOT NULL,
goto VARCHAR(250) NOT NULL,
description VARCHAR(250) NULL,
active TINYINT(1) NOT NULL DEFAULT 0,
created TIMESTAMP(14) NOT NULL DEFAULT NOW(),
modified TIMESTAMP(14) NULL
);
CREATE TABLE vacations (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
mailbox_id INT(10) NOT NULL,
subject VARCHAR(250) NOT NULL,
body TEXT NOT NULL,
description VARCHAR(250) NULL,
active TINYINT(1) NOT NULL DEFAULT 0,
created TIMESTAMP(14) NOT NULL DEFAULT NOW(),
modified TIMESTAMP(14) NULL
);
Exim Configuration
# Auth params for mysql
hide mysql_servers = localhost/MAILDB/MYSQLUSER/MYSQLPASS
# local and relay to domains settings from mysql
domainlist local_domains = ${lookup mysql{SELECT fqdn AS domain FROM domains WHERE fqdn='${quote_mysql:$domain}' AND type='local' AND active=1}}
domainlist relay_to_domains = ${lookup mysql{SELECT fqdn AS domain FROM domains WHERE fqdn='${quote_mysql:$domain}' AND type='relay' AND active=1}}
local_delivery:
driver = appendfile
maildir_format = true
directory = /var/spool/mail/$domain/$local_part
create_directory = true
directory_mode = 0770
mode_fail_narrower = false
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
group = mail
mode = 0660
dovecot_delivery:
driver = appendfile
maildir_format = true
directory = /var/spool/mail/$domain/$local_part
create_directory = true
directory_mode = 0770
mode_fail_narrower = false
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
user = mail
group = mail
mode = 0660
auth_plain:
driver = plaintext
public_name = PLAIN
server_condition = ${lookup mysql{SELECT CONCAT(mailboxes.local_part,'@',domains.fqdn) FROM mailboxes,domains WHERE \
mailboxes.local_part=SUBSTRING_INDEX('${quote_mysql:$auth2}','@',1) AND \
mailboxes.password=MD5('${quote_mysql:$auth3}') AND \
mailboxes.active=1 AND \
mailboxes.domain_id=domains.id AND \
domains.fqdn=SUBSTRING_INDEX('${quote_mysql:$auth2}','@',-1) AND \
domains.active=1}{yes}{no}}
server_prompts = :
server_set_id = $auth2
auth_login:
driver = plaintext
public_name = LOGIN
server_condition = ${lookup mysql{SELECT CONCAT(mailboxes.local_part,'@',domains.fqdn) FROM mailboxes,domains WHERE \
mailboxes.local_part=SUBSTRING_INDEX('${quote_mysql:$auth1}','@',1) AND \
mailboxes.password=MD5('${quote_mysql:$auth2}') AND \
mailboxes.active=1 AND \
mailboxes.domain_id=domains.id AND \
domains.fqdn=SUBSTRING_INDEX('${quote_mysql:$auth1}','@',-1) AND \
domains.active=1}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $auth1
Dovecot configuration - /etc/dovecot.conf
passdb sql {
args = /etc/dovecot-sql.conf
}
userdb passwd {
}
userdb SQL {
args = /etc/dovecot-sql.conf
}
/etc/dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=maildb user=MYSQLUSER password=MYSQLPASS
default_pass_scheme = PLAIN-MD5
password_query = SELECT CONCAT(mailboxes.local_part,'@',domains.fqdn) as `user`,mailboxes.password AS `password`,'/var/spool/mail/%d/%n' AS `userdb_home`, 8 AS `userdb_uid`, 12 AS `userdb_gid` FROM `mailboxes`, `domains` WHERE mailboxes.local_part = '%n' AND mailboxes.active = 1 AND mailboxes.domain_id = domains.id AND domains.fqdn = '%d' AND domains.active = 1
user_query = SELECT '/var/spool/mail/%d/%n' AS `home`, 8 AS `uid`, 12 AS `gid`
Populating our mysql tables
INSERT INTO domains (fqdn,type,active) VALUES('my-test-site.com','local',1);
INSERT INTO mailboxes VALUES(NULL,1,'dummy',MD5('dummy'),'test',1,NOW(),NOW());
Testing configuration
# telnet 10.3.0.204 143
Trying 10.3.0.204...
Connected to 10.3.0.204.
Escape character is '^]'.
* OK Dovecot ready.
a003 LOGIN dummy@my-test-site.com dummy
a003 OK Logged in.
a004 SELECT INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 7 EXISTS
* 7 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1296735311] UIDs valid
* OK [UIDNEXT 8] Predicted next UID
a004 OK [READ-WRITE] Select completed.
SENDING A TEST EMAIL FROM ANOTHER BOX
# telnet 10.3.0.204
HELO my-test-box.com
250 devmail Hello my-test-box.com [10.3.0.201]
MAIL FROM:me@my-test-site.com
250 OK
RCPT TO:dummy@my-test-site.com
250 Accepted
DATA
354 Enter message, ending with “.” on a line by itself
TEST MESSAGE DATA
.
250 OK id=1Pkyad-0001b7-AF
ACCESSING WEBMAIL
Load up a web browswer and type in the following address.
http://10.3.0.204/webmail
Ubuntu 10.10 Maverick Meerkat USB install problems
I finished downloading ubuntu-10.10-desktop-i386.iso , and successfully created a USB startup disk using the utility in my 10.04 desktop. Now for some reason after trying to boot from it im faced with a boot error “Unknown keyword in configuration file” . After some googling I found a fix posted on Trent Scott’s Blog.
After creating your usb startup disk with the ubuntu 10.10 iso file, open the file syslinux.cfg in the syslinux folder.
look for the line “ui gfxboot bootlogo” and change it to “gfxboot bootlogo”.
save the file and you’re good to go.
Disk imaging with netcat and dd with ubuntu linux
Want to create a disk image of a system but write it on another hard disk? This can easily be done with the help of netcat and dd.
For this example you will need two computers connected on the same network, and enough room on one machine to hold your disk image
Destination Machine
So we’ll start off this example by preparing our destination machine to listen on tcp port 4444 via netcat. The port is arbitrary so you can really pick any port that is not being used. Just have to make sure that its the same on both ends.
root@tree:~# netcat -l -p 4444 | dd of=remote-machine.img
Source Machine
Next we’ll start a dd on the source machine and pipe it to netcat on port 4444
root@leaf:~# dd if=/dev/sda1 | netcat destination-machine-ip 4444
Now sit back and wait for your image to be done, when it’s finished dd will print out its status something like
NOTE: you will have to push CTRL+C to cancel out after this is completed, as the netcat session will still be active.
root@leaf:~#
30820468+71926 records in
30867456+0 records out
15804137472 bytes (16 GB) copied, 739.395 s, 21.4 MB/s
^C
If you want to find out the status of dd during the copy theres a couple of ways to do this, open up the system monitor in Ubuntu Linux, and it should tell you the transfer rate. Launch iostat or ifstat through a terminal. Invoke a command from terminal to get dd to display the current progress .
Viola, we’ll now have a dd image of our disk or partition. I like to verify the exact size of the file matches the size output from fdisk.
Destination Machine
root@root:~# ls -la remote-machine.img
-rw-r--r-- 1 root root 15804137472 2010-02-04 10:53 remote-machine.img
Source Machine
root@leaf:~# fdisk -l /dev/sda
Disk /dev/sda: 15.8 GB, 15804137472 bytes
255 heads, 63 sectors/track, 1921 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Display dd progress during dd in ubuntu linux
Started a dd but wondering what the progress is? I haven’t found a way to do a verbose mode for dd, but this command seems to do the trick.
Lets start off by creating a dd of /dev/sda1
mnk0@tree:~# dd if=/dev/sda1 of=my-dd.img
We’ll need to find the process number of our dd which can easily be done with the following command.
ps -ef | grep dd
we’ll get something like this
root 31733 31268 54 10:44 pts/0 00:01:55 dd of my-dd.img
Now we can run our command to find the status of this dd. Open another terminal session.
kill -SIGUSR1 31733
and looking back at our dd page we should see dd dump out a status of its current progress.
mnk0@tree:~# dd if=/dev/sda1 of=my-dd.img
12574781+40555 records in
12601304+0 records out
6451867648 bytes (6.5 GB) copied, 224.634 s, 28.7 MB/s
Data recovery the quick and easy way with ubuntu desktop linux 9.04
Ever had a failing disk? Using some hard drive recovery tools we can make salvaging our valueble data something possible.
Using dd_rescue we are going to make an image of the hard drive onto a reliable storage area, then we can run whatever filesystem recovery utilities we want.
The beauty of ddrescue is that it is fully automated and will rescue all the blocks that it can read successfully on the first pass, and with any bad blocks it will come back and retry as much as possible.
Install ddrescue tools
sudo apt-get install ddrescue
Connect the failed disk to your system
By either plugging the drive directly into system, or using one of those usb enclosure or slotted drive device you’ll need to have your failing hard disk connected and unmounted before we can begin.
sudo dd_rescue /dev/sdb disk-image.img
mnk0@earth:~$ sudo dd_rescue /dev/sdb disk-image.img
[sudo] password for mnk0:
Summary for /dev/sdb -> disk-image.img:r: 0.0k, succxfer: 228352.0k
dd_rescue: (info): ipos: 229376.0k, opos: 229376.0k, xferd: 229376.0k
errs: 0, errxfer: 0.0k, succxfer: 229376.0k
+curr.rate: 26249kB/s, avg.rate: 28391kB/s, avg.load: 13.5%
We can now mount this image on our system and take a look at the files.
mount -t ext3 -o loop disk-image.img /mnt/tmp
Using linux like a pro with mplayer, find & play mp3 files from command line in Ubuntu Linux 9.04 Jaunty
Save precious CPU and memory by using mplayer to play mp3s, also keep your playlist file up to date with all your mp3 media files.
First and foremost we need to have mplayer installed, if your on a ubuntu-debian based system use the following command
to install mplayer, if not then you can download the appropriate packages and install them.
apt-get install mplayer
Lets make a home for our script file, and set the appropiate permissions
mkdir ~/scripts; touch ~/scripts/playme.sh; chmod +x ~/scripts/playme.sh; gedit ~/scripts/playme.sh
Paste the following code into your new script file, if you keep your Music files in a different location then change the variable musdir to match your setup.
#/bin/bash
# VARS ##########################################
tmpdir='/tmp'
musdir='/home/osamad/Music'
filename='playlist.m3u'
# CODE ##########################################
find $musdir -name '*.mp3' -o -name '*.ogg' 2>/dev/null >> $tmpdir/$filename
mplayer -playlist $tmpdir/$filename -shuffle -loop 0 -radio volume=80
Using find we build a list of all our mp3s, in this case we have multiple types of media files we want to play so we can specify that by adding the -o -name flags and add them in.
- -playlist ;flag we set the playlist file we just created
- -shuffle ; enables shuffle mode
- -loop 0 ; enables loop 0=forever
- -radio volume=80 ; set the default volume to 80% (use * or / to adjust when playing)
RunTime
Push ALT+F2 or launch from a terminal
./scripts/playme.sh
MORE
To find out more information, or to customize your mplayer settings
man mplayer
Create a custom launcher and run your script from the gnome-panel
Gnome Do, with Docky in Ubuntu Ibex 8.10 setup guide
I recently found out about an amazingly slick desktop dock, called Gnome Do. Not only is it great looking, but its functionality is what sold me on this one. With the ability to launch any app, from the launcher simply by typing the name Gnome Do has totally converted me.
I set this up on my Ubuntu Ibex Desktop with a couple easy steps.
Adding repository to Apt
Open up a gnome-terminal window, and then lets open up the file /etc/apt/sources.list . Paste the following into your terminal.
gksudo /etc/apt/sources.list
Copy and paste the following repositories at the end of your file in gedit.
# GNOME DO ######################################################
deb http://ppa.launchpad.net/do-core/ppa/ubuntu intrepid main
deb-src http://ppa.launchpad.net/do-core/ppa/ubuntu intrepid main

Adding GPG Key to apt (Optional)
1. Open up gedit then copy and paste this PGP key to a text file, gnome-do.key and save it
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.0.10
mI0ESXUVdQEEAN8ALfH3wueKsSgDwA/HVEHdB7nlppqGKW/tubvGTy0ayf4M9ylX45szZK97
uL9/UHh5/B7eGMSB45EMJ0/qvTiflS6SwCxRCoKCW1PpYZlVcOLh5UUBkyREPJZcki1lK7pf
xvG9LkYKnvBP89s2PnO5LlDheEsVR4SqDGEtich/ABEBAAG0JExhdW5jaHBhZCBQUEEgZm9y
IEdOT01FIERvIENvcmUgVGVhbYi2BBMBAgAgBQJJdRV1AhsDBgsJCAcDAgQVAggDBBYCAwEC
HgECF4AACgkQKKggUHdVjdCVeAP+ONJtMFx9MGSJe33YiskagXEG5cQGYdDi5sWWUAP80bP1
Qe+Dsnjs3VKQ9ZZW3M8UNXsoFFN501hgJFBwUUCWIRSGZkzVgKoZZtZOe0Dws39xfV//8JFS
Te/r0oPzrr10iTFupTe/wBR0M9JbKGdY7SvooyqU+W2rf8/LldGx7KE=
=3C2V
-----END PGP PUBLIC KEY BLOCK-----
2. Open up the Software Sources Configuration Menu, and click on the Authentication tab. Then Import Key,
Installing Gnome Do
Open up a gnome-terminal window and type
sudo apt-get update
then type
sudo apt-get install gnome-do
Removing the default gnome panel
Dont worry, you can easily bring it back, we’re just gonna hide it, push ALT+F2 or from a gnome-terminal run
gconf-editor
Navigate to ‘ Apps > Panel > TopLevels > top_panel_screen0 ‘ These are the values I changed to make it dissappear
auto_hide = checked
auto_hide_size = 1
hide_delay = 1
unhide_delay = 10000
x = 0
y = 10000

Select Docky
Launch gnome-do from the terminal or from ALT-F2
gnome-do
Right click on the Gnome Do , launcher, then click on preferences, then click on the Appearence Tab, and select Docky. Now you have a desktop that looks almost as good as mine!! ![]()

Check out the website for most customization, and features. http://do.davebsd.com/
keep broken files when trying to unrar a failed crc chek on a rar archive file
ok just a quick note ,, if you’re tryin to unrar an archive thats been corrupted or been split up into multiple parts, keep the broken parts using unrar.
more description
4 Rar files, part1-4, 3 fails becuase of a crc check issue, so you can recover part of the archive using the keep broken flag for unrar ‘-kb’
mnk0@tree:~/downloads$ unrar x -kb Bleach_Naruto Shippuuden 98 - 720p.rar
UNRAR 3.80 beta 2 freeware Copyright (c) 1993-2008 Alexander Roshal
Extracting from Bleach_Naruto Shippuuden 98 - 720p.rar
Extracting Bleach_Naruto Shippuuden 98 - 720p.rar 99%
Calculating control sums of all volumes.
Cannot find volume Bleach_Naruto Shippuuden 98 - 720p.rar
Bleach_Naruto Shippuuden 98 - 720p.mkv - CRC failed
Total errors: 1
mnk0@tree:~/downloads$ ls Bleach_Naruto Shippuuden 98 - 720p.mkv*
Bleach_Naruto Shippuuden 98 - 720p.mkv
mnk0@tree:~/downloads$
Using Cisco vpn client with Ubuntu Linux Desktop
Configuration
Download and install the Cisco vpn Client. im using vpnclient-linux-x86_64-4.8.02.0030-k9 at the time of this article.
(if u need it send me an email). unpack, and install in my installation i opted out of the option for starting as a daemon so i start it manually everytime.
mnk0@tree:~$ sudo /etc/init.d/vpnclient_init start
Using my PROFILE.pcf file
Then we can copy our Cisco VPN Profile over to the profile directory.
mnk0@tree:~$ cp PROFILE.pcf /etc/opt/cisco-vpnclient/Profiles/
Now we are ready to connect to our connection. Note we dont add the .pcf extension to the profile we’re going to use
mnk0@tree:~$ /etc/opt/cisco-vpnclient connect PROFILE
Initializing the VPN connection.
Contacting the gateway at 4.23.45.21
Contacting the gateway at 4.23.45.21 (balancing)
User Authentication for PROFILE...
The server has requested the following information to complete the user authentication:
Username [mnk0]:
Passcode []:
Authenticating user.
Negotiating security policies.
Securing communication channel.
Your VPN connection is secure.
VPN tunnel information.
Client address: 10.10.10.46
Server address: 4.23.45.21
Encryption: 256-bit AES
Authentication: HMAC-SHA
IP Compression: None
NAT passthrough is active on port UDP 4500
Local LAN Access is disabled
Exiting
When we are ready to exit, just hit CTRL+C on your terminal session, and shutdown the daemon.
mnk0@tree:~$ sudo /etc/init.d/vpnclient_init stop
mnk0@tree:~$ Done
Using a swapfile to increase the swap space on your system
This can be a very handy function if we want to use a file, instead of a partition, and with modern filesystems the performance is almost on par with using a dedicated partition for your swap area.
1. Using dd lets make a zero’d file for the swap
dd if=/dev/zero of=/swapfile bs=1048576 count=1000
This example would create a swapfile of 1 gig using a blocksize of a megabyte (1048576).
2. Make file as a swapfile
mkswp /swapfile
3. Activate swapfile
swapon /swapfile
4. Verify that our swapfile has been activated
swapon -s
We should see something like this in the list ..
Filename Type Size Used Priority
/swapfile file 9999992 0 -2
If you want to have this a permanent solution, then adding the entry to fstab would probally be a better idea,
open up /etc/fstab in your favourite editor and add the following line.
/swapfile swap swap defaults 0 0




