<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Technology - The Mansurovs</title>
	
	<link>http://mansurovs.com/tech</link>
	<description>Digital Photography Tips, Recipes, Technology and Photographs from The Mansurovs</description>
	<lastBuildDate>Fri, 23 Jul 2010 00:43:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mansurovs-tech" /><feedburner:info uri="mansurovs-tech" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Samba Installation and Configuration Guide</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/v9mYBCaMmXs/samba-installation-and-configuration-guide</link>
		<comments>http://mansurovs.com/tech/samba-installation-and-configuration-guide#comments</comments>
		<pubDate>Mon, 28 Jun 2010 15:18:08 +0000</pubDate>
		<dc:creator>Karim Elatov</dc:creator>
				<category><![CDATA[Linux-Unix]]></category>
		<category><![CDATA[CIFS]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[SMB]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=5118</guid>
		<description><![CDATA[Samba is an Open Source/Free Software suite that provides seamless file and print services to SMB/CIFS clients. In laymen speak, it allows windows machines to connect to a Linux samba share :) I will break this guide down into 3 parts: Compile/Install, Setup, and Actually Running the Service. 1) Install Instructions Download the source from... <a href=http://mansurovs.com/tech/samba-installation-and-configuration-guide>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Samba is an Open Source/Free Software suite that provides seamless file and print services to SMB/CIFS clients. In laymen speak, it allows windows machines to connect to a Linux samba share :) I will break this guide down into 3 parts: Compile/Install, Setup, and Actually Running the Service.</p>
<h3>1) Install Instructions</h3>
<p>Download the source from the following URL: <a  href="http://www.samba.org/samba/download/">http://www.samba.org/samba/download</a> You should get a file that looks similar to this: <strong>samba-3.4.0.tar.gz</strong>.</p>
<pre class="brush: plain;">mv samba-3.4.0.tar.gz /tmp; cd /tmp
tar xzf samba-3.4.0.tar.gz; cd samba-3.4.0/source3
</pre>
<p>Setup up appropriate environment variables<br />
*For solaris use /usr/sfw/bin/gcc</p>
<pre class="brush: plain;">set path = ( /usr/sfw/bin $path )
setenv CC &quot;gcc -Wl,-rpath,/usr/local/samba/lib&quot;
</pre>
<p>*For Linux</p>
<pre class="brush: plain;">setenv LD_RUN_PATH /usr/local/samba/lib
</pre>
<p><span id="more-5118"></span><br />
Now for the configure</p>
<pre class="brush: plain;">./configure --localstatedir=/var/adm/log/samba --prefix=/usr/local/samba --with-configdir=/usr/local/adm/config/samba --with privatedir=/usr/local/adm/config/samba/private --with-sendfile-support=no
make
mkdir /var/adm/log/samba
mkdir /usr/local/adm/config/samba
make install
</pre>
<h3>2) Post Install</h3>
<p>Strip all the binaries to save space</p>
<pre class="brush: plain;">find /usr/local/samba/bin/ -type f -perm -100 -exec strip {} \;
find /usr/local/samba/sbin/  -type f -perm -100 -exec strip {} \;
</pre>
<p>Create the man pages<br />
Solaris</p>
<pre class="brush: plain;">catman -w -M /usr/local/samba/share/man
</pre>
<p>Linux</p>
<pre class="brush: plain;">sudo makewhatis -u -w /usr/local/samba/share/man/
cp /var/cache/man/whatis /usr/local/samba/share/man
</pre>
<p>Clean up and Create the appropriate links</p>
<pre class="brush: plain;">rm -rf /usr/local/samba/swat
rm -rf /usr/local/samba/private
rm /usr/local/samba/lib/*.msg
rm /usr/local/samba/sbin/swat
ln -s /usr/local/adm/config/samba/smb.conf /usr/local/samba/lib/smb.conf
ln -s /usr/local/adm/config/samba/smbusers /usr/local/samba/lib/smbusers
ln -s /var/adm/log/samba /usr/local/samba/var
ln -s /usr/local/adm/config/samba/private /usr/local/samba/private
chmod a-x /usr/local/samba/include/*
chown -R -h 0:0 /usr/local/samba
chmod -R go-w /usr/local/samba
</pre>
<h3>3) Start-up Scripts</h3>
<p>Now that we have samba compiled and installed we need to make up a startup script. Under <strong>/usr/local/samba/sbin</strong>, we will now have some daemons. Among them, we will have nmbd and smbd: <strong>nmbd</strong> is a server that understands and can reply to NetBIOS over IP name service requests, like those produced by Windows clients. When windows start up, they may wish to locate an SMB/CIFS server. That is, they wish to know what IP number a specified host is using. Nmbd will listen for such requests, and if its own NetBIOS name is specified it will respond with the IP number of the host it is running on. <strong>smbd</strong> is the server daemon that provides filesharing and printing services to Windows clients. (Most of this information can be found in the man pages for nmdb and smbd). Now then, when you have a samba server it is usually a good idea to start both services: nmdb and smbd. Here are examples of start-up scripts from a fedora install with my custom changes encorporated :).</p>
<p><strong> SMBD</strong></p>
<pre class="brush: plain;">
#!/bin/sh
#
# chkconfig: - 91 35
# description: Starts and stops the Samba smbd daemon \
#	       used to provide SMB network services.
#
# pidfile: /var/run/samba/smbd.pid
# config:  /usr/local/samba/lib/smb.conf

SMBCONFIG=&quot;/usr/local/samba/lib/smb.conf&quot;
SMBDOPTIONS=&quot;-D -s/usr/local/samba/lib/smb.conf&quot;

# Source function library.
if [ -f /etc/init.d/functions ] ; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 1
fi

# Avoid using root's TMPDIR
unset TMPDIR

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = &quot;no&quot; ] &amp;&amp; exit 1

# Check that smb.conf exists.
[ -f $SMBCONFIG ] || exit 6

RETVAL=0

start() {
        KIND=&quot;SMB&quot;
	echo -n $&quot;Starting $KIND services: &quot;
	daemon smbd $SMBDOPTIONS
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] &amp;&amp; touch /var/lock/subsys/smb || \
	   RETVAL=1
	return $RETVAL
}	

stop() {
        KIND=&quot;SMB&quot;
	echo -n $&quot;Shutting down $KIND services: &quot;
	killproc smbd
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] &amp;&amp; rm -f /var/lock/subsys/smb
	return $RETVAL
}	

restart() {
	stop
	start
}	

# Check that we can write to it... so non-root users stop here
[ -w $SMBCONFIG ] || exit 4

case &quot;$1&quot; in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart)
  	restart
	;;
  *)
	echo $&quot;Usage: $0 {start|stop|restart}&quot;
	exit 2
esac

exit $?
</pre>
<p><strong>NMDB</strong></p>
<pre class="brush: plain;">
#!/bin/sh
#
# chkconfig: - 91 35
# description: Starts and stops the Samba nmbd daemons \
#	       used to provide SMB network services.
#
# pidfile: /var/run/samba/nmbd.pid
# config:  SMBCONFIG

SMBCONFIG=&quot;/usr/local/samba/lib/smb.conf&quot;
NMBDOPTIONS=&quot;-D -l/var/log/samba -s/usr/local/samba/lib/smb.conf&quot;

# Source function library.
if [ -f /etc/init.d/functions ] ; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 1
fi

# Avoid using root's TMPDIR
unset TMPDIR

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = &quot;no&quot; ] &amp;&amp; exit 1

# Check that smb.conf exists.
[ -f SMBCONFIG ] || exit 6

RETVAL=0

start() {
        KIND=&quot;NMB&quot;
	echo -n $&quot;Starting $KIND services: &quot;
	daemon nmbd $NMBDOPTIONS
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] &amp;&amp; touch /var/lock/subsys/nmb || \
	   RETVAL=1
	return $RETVAL
}	

stop() {
	KIND=&quot;NMB&quot;
	echo -n $&quot;Shutting down $KIND services: &quot;
	killproc nmbd
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] &amp;&amp; rm -f /var/lock/subsys/nmb
	return $RETVAL
}	

restart() {
	stop
	start
}	

# Check that we can write to it... so non-root users stop here
[ -w SMBCONFIG ] || exit 4

case &quot;$1&quot; in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart)
  	restart
	;;
  *)
	echo $&quot;Usage: $0 {start|stop|restart}&quot;
	exit 2
esac

exit $?
</pre>
<p>Setup the startup scripts.</p>
<pre class="brush: plain;">
cp smb /etc/init.d/smb
cp nmb /etc/init.d/nmb
chkconfig --add smb
chkconfig --add nmb
</pre>
<h3>4) Creating the smb.conf file</h3>
<p>Samba is a very power service, it can be used as a regular sharing service, it can be setup as a primary domain controller, and much more. It can also use a variety of authentication methods such as tdbsam (samba&#8217;s own database), smbpasswd (just a text file with password hashes) , or even against an active directory. I will provide 3 examples: 1) smb.conf as a standard sharing service sharing everyone&#8217;s home directory. 2) smb.conf as a primary domain controller, and 3) smb.conf authenticating against an AD server.</p>
<h4>Example as a standard sharing service </h4>
<pre class="brush: plain;">
[global]

	workgroup = MYSMBWG
	server string = Samba Server Version %v

	# logs split per machine
	log file = /var/log/samba/log.%m

	# max 50KB per log file, then rotate
	max log size = 50

        # Verbosity level of logging goes from 0-10
        # the value below is usually used for debugging
	log level = 10

	# authentication method
	security = user
	passdb backend = tdbsam
#============ Share Definitions ===============
[homes]
	comment = Home Directories
	browseable = no
	writable = yes
</pre>
<h4>Example as a Primary Domain Controller </h4>
<pre class="brush: plain;">
[global]
	workgroup = MYSMBWG
	netbios name = MYMACHINE
	server string = %h server (Samba)

        # Primary Controller Settings
        domain logons = yes
	preferred master = yes
	wins support = yes

        #Authentication method
	security = user
        passdb backend = smbpasswd
        smb passwd file = /usr/local/samba/private/smbpasswd

	# Default logon: for roaming profiles, this must be here
	logon drive = H:
	logon path = \\%N\profile\%U

	# Useradd scripts: this is custom, so when a new machine
        # joins this domain, a machine account is created.
	add machine script = /usr/sbin/useradd -d /dev/null -g 902 -s /bin/false -M -r %u

	# set the loglevel
	log level = 3

#============ Share Definitions ===============
[homes]
   comment = Home
   valid users = %S
   read only = no
   browsable = no

[netlogon]
   comment = Network Logon Service
   path = /home/samba/netlogon
   admin users = Administrator
   valid users = %U
   read only = no

[profile]
   comment = User profiles
   path = /home/samba/profiles
   valid users = %U
   create mode = 0600
   directory mode = 0700
   writable = yes
   browsable = no
</pre>
<h4> Example with AD authentication </h4>
<p>* To use this setup there are many prerequisites :) One of the them is that another samba daemon (winbindd) must be running. I will write another guide on how to set this up in the future :)</p>
<pre class="brush: plain;">
[global]
workgroup = AD
realm = YOUR.AD.SERVER (DOMAIN.INTERNAL)
security = ads
password server = your.ads.server1 your.ads.server2 (domainserver.domain.internal)
encrypt passwords = yes

domain logons = no
domain master = no

winbind separator = +
# Disable idmapping of Windows SIDs to Unix UIDs
idmap config AD:readonly = yes

log level = 2
max log size = 20
log file = /var/log/samba/log.%m

#============ Share Definitions ===============
[homes]
	comment = Home directorys from bechtel
	guest ok = no
	read only = no
	force user = %S

[example-share-with-ad-users]
       comment = Temp Share
       path = /tmp
       valid users = AD+&lt;ad_user1&gt;,AD+&lt;ad_user2&gt;
       write list = AD+&lt;ad_user1&gt;,AD+&lt;ad_user2&gt;
       read list = AD+&lt;ad_user1&gt;,AD+&lt;ad_user2&gt;
       #ie write list = AD+elatov

[example-share-with-ad-groups]
      comment = Temp Share
       path = /data/tmp
       writeable=yes
       browseable=yes
       valid users = @AD+&quot;&lt;ad_group1&gt;&quot; @AD+&quot;&lt;ad_group2&gt;&quot;
       #ie valid users = @AD+&quot;Finance Department Users&quot;
</pre>
<h3>5) Starting the samba service </h3>
<p>Once you have the start-up scripts in place and your smb.conf all setup it is  now time to start the samba services :)</p>
<p>Check to make sure not errors exist in the smb.conf</p>
<pre class="brush: plain;">
/usr/local/samba/bin/testparm
</pre>
<p>* If you see any errors, fix them :)</p>
<p>Start the services</p>
<pre class="brush: plain;">
service smb start
service nmb start
</pre>
<p>Check to make sure they are running</p>
<pre class="brush: plain;">
ps -eaf | grep smbd
ps -eaf | grep nmbd
</pre>
<p>If the services are not running or the service fails to start, check under /var/log/samba for the reasons why it&#8217;s not running. Also setting the &#8220;log level&#8221; variable to &#8220;10&#8243; will help in debugging startup error. Well enjoy!! :)</p>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/v9mYBCaMmXs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/samba-installation-and-configuration-guide/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/samba-installation-and-configuration-guide</feedburner:origLink></item>
		<item>
		<title>Kronos Article About My Project</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/86FCV7ue8XM/kronos-article-about-my-project</link>
		<comments>http://mansurovs.com/tech/kronos-article-about-my-project#comments</comments>
		<pubDate>Wed, 21 Apr 2010 23:16:02 +0000</pubDate>
		<dc:creator>Nasim Mansurov</dc:creator>
				<category><![CDATA[ERP]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[ERP HCM]]></category>
		<category><![CDATA[Kronos]]></category>
		<category><![CDATA[SAP Payroll]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=5114</guid>
		<description><![CDATA[This article is a bit old (from 2009) about my project to use Kronos Time &#38; Labor software together with SAP ERP, which turned out to be a very successful project with a quick ROI. Another article has recently been published by IDC and they featured Stonebridge Companies as a case study for Kronos. Here... <a href=http://mansurovs.com/tech/kronos-article-about-my-project>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>This article is a bit old (from 2009) about my project to use <a  href="http://www.kronos.com/Stonebridge-Companies-Leverages-Kronos-ERP-Integration-Capabilities.aspx">Kronos Time &amp; Labor software together with SAP ERP</a>, which turned out to be a very successful project with a quick ROI.</p>
<p>Another article has recently been published by <a  href="http://www.idc.com/">IDC</a> and they featured Stonebridge Companies as a case study for Kronos. Here it is:</p>
<h3>Stonebridge Companies: Facilitating Growth with Unified Workforce Management</h3>
<h4>Overview</h4>
<p>More than ever, the current difficult economy highlights the need for organizations to manage their workforce like any other asset. While unemployment has surpassed double digits, labor costs remain the largest controllable expense for most organizations. For several years, organizations seeking to manage the workforce effectively have increasingly been turning to automated workforce management solutions. Such systems can enable organizations to achieve visibility into workforce management trends, practices, and policies that in turn can reduce costs related to staffing, compliance, and payroll.</p>
<p><span id="more-5114"></span>To maximize the benefits of an automated workforce management solution, organizations need to consider the following:</p>
<ol>
<li>Process automation. Complete automation of the workforce management process, including scheduling, timekeeping, attendance, and leave management, enables organizations to increase visibility into and control of labor costs and mitigate compliance risk. Unlike solutions that are highly dependent on batch processing of employee time, best-of-breed workforce management solutions that provide real-time validation and processing increase accuracy by reducing potential for errors while also simplifying work for managers.</li>
<li>Integration. Workforce management data often resides in information silos (e.g., HR management software, enterprise resource planning [ERP], or other<br />
systems) with little or no real-time integration. As a result, workforce management processes at many organizations are often delayed and prone to errors, which can result in costly validation efforts, unmanaged employee absences, inaccurate or late payroll, and a general lack of management oversight, visibility, and control. Error-prone systems can lead to increased costs, compliance issues, and an inability to respond quickly to changing business<br />
conditions. Eliminating such workforce management issues by implementing integrated workforce management software and devices can positively impact an<br />
organization&#8217;s administrative operations as well as its overall performance.</li>
<li>Cost of ownership. The degree to which a workforce management system meets or exceeds the needs of the organization without customization has a<br />
direct impact on the cost of deploying the system initially and maintaining it over time. Some modules for workforce management that only provide basic<br />
capabilities out of the box often require costly customization to fully implement. A flexible system that keeps pace with ever-evolving needs is key to keeping<br />
costs low and ensuring that the workforce management process is accurate, efficient, and compliant. Specialized best-of-breed systems tend to have the<br />
advantage of configurability over systems offered as part of broader HR systems.</li>
</ol>
<p>In many situations, a best-of-breed workforce management system can provide organizations with advantages — both functional and economic — when compared with an ERP solution. Kronos Incorporated offers an integrated workforce management solution with products for scheduling, absence management, time and attendance, and analytics; a broad portfolio of human resource management software; and data collection devices that include biometric capabilities.</p>
<p>The Kronos workforce management solution — Workforce Central — provides complete automation and offers organizations a centralized &#8220;single source of truth&#8221; for employee data. The modules are designed to eliminate redundant data entry and consequently reduce errors and administrative costs. IDC interviewed Stonebridge Companies about its decision to implement workforce management software from Kronos rather than customize an ERP system for its<br />
timekeeping and payroll needs.</p>
<h4>Organizational Background</h4>
<p>Manually entering time and attendance data for employee payroll purposes is by its very nature an error-prone process, and the situation was considerably more problematic for Stonebridge Companies. A hotel development and hotel management company with headquarters in Englewood, Colorado, Stonebridge Companies is geographically dispersed with a largely hourly workforce.</p>
<p>A few years ago, the company recognized that its method for time collection and processing — an approach that permitted each location to devise its own standard — wouldn&#8217;t support Stonebridge&#8217;s growth plans moving forward. The far-flung nature of Stonebridge&#8217;s business, combined with its expansion plans, led the company to evaluate more efficient and standardized ways of handling its time and attendance needs.</p>
<h4>Business Drivers</h4>
<p>Five years ago, Stonebridge Companies had no unified method of consolidating time information for payroll. At the time, the company had approximately 500 employees at 20 locations throughout the United States. &#8220;Every hotel had its own way of processing time,&#8221; recalled Nasim Mansurov, Stonebridge&#8217;s vice president of information technology. Some hotels relied on a legacy system that Stonebridge inherited through acquisition, while other hotels recorded hours on pieces of paper when employees clocked in and out. Once each location consolidated time, the data would be sent via a spreadsheet to the company&#8217;s headquarters where it was manually keyed into the company&#8217;s payroll system. &#8220;It was a very painful process,&#8221; Mansurov said, one that was beset with errors and off-cycle check requests due to those errors. &#8220;We had a lot of issues because the hotels couldn&#8217;t track hours correctly,&#8221; he said.</p>
<p>Hired in 2004, Mansurov knew that Stonebridge had to find a standardized way of tracking time. The existing method not only was inherently inefficient but also couldn&#8217;t support Stonebridge&#8217;s plan to grow its business significantly. Stonebridge&#8217;s criteria for a new system was twofold: The company wanted to be able to record hours properly when employees clock in and out rather than backtrack at the end of a pay period, and the company wanted to consolidate all that information from various locations easily. After evaluating a number of time and attendance systems, Stonebridge opted for Workforce Central, a workforce management suite from Kronos. Using Kronos in conjunction with outsourcing payroll resulted in immediate benefits. &#8220;From having no system whatsoever to moving over to Kronos, the ROI payback period was less than a year,&#8221; Mansurov said.</p>
<p>Stonebridge still needed to streamline the payroll process as well as its financials, so in 2007 the company implemented an ERP system to handle HR and payroll. While consultants initially recommended using the ERP&#8217;s time module, Mansurov argued that the process of importing the historical data from the Kronos system into the ERP system would be too unwieldy. And more important, Mansurov said, the Kronos software is relatively easy to configure for Stonebridge&#8217;s specific time and attendance needs. For example, it&#8217;s not unusual in the hospitality industry to have an employee work in three to five different jobs — a level of complexity, Mansurov added, that is not easily accomplished in an ERP system without a lot of customization. With Kronos, Mansurov said, &#8220;it&#8217;s very easy, very intuitive; things are not as complicated as an ERP system.&#8221; Mansurov added that to make changes in an ERP system, Stonebridge would need a configuration specialist and programmers and would then have to manage the ongoing communications among all involved. With the Kronos<br />
system, &#8220;I can create a payroll run in about half an hour,&#8221; he said. That kind of flexibility is important for a company used to growing by development and acquisition.</p>
<p>Another reason why Mansurov wanted to stay with Kronos is its ease of use. In light of the hospitality industry&#8217;s traditionally high turnover rate, Stonebridge doesn&#8217;t have to make significant investments in time or money to train managers on how to use the system; Mansurov said that managers can be trained on the Kronos system within two hours because the system is &#8220;easy and intuitive.&#8221;</p>
<h4>The Outcome</h4>
<p>Currently, Stonebridge relies on an interface between Kronos and the ERP system that integrates time and attendance data with HR and payroll information. &#8220;We upload the hours through Kronos to the ERP interface, which I built with one of the Kronos consultants,&#8221; said Mansurov. Hours for each employee are extracted from Kronos daily. Since initially implementing Kronos, Stonebridge has continued to grow, and now has 1,600 employees in 40 locations. Even with the expanded ranks of employees at more locations, it takes about one hour to process the entire payroll. (Salaried employees are not included in the Kronos system.) Mansurov said that prior to developing the interface between Kronos and the ERP, Stonebridge spent an entire day processing the payroll. Then the company would spend the next two weeks on follow-up, cutting various checks for employees whose hours were missed due to master data, interface, and other issues.</p>
<p>Overall, Mansurov estimates that payroll processing is now 99% accurate. Now that Stonebridge has its payroll processes optimized, the company is looking to implement workforce analytics as a way to optimize its labor. &#8220;We don&#8217;t have to be as concerned about fixing issues,&#8221; Mansurov said. &#8220;We&#8217;re now more concerned about efficiencies for the company.&#8221;</p>
<h4>Challenges/Considerations</h4>
<p>Even though there are many benefits associated with real-time workforce management, there is an appeal to having a single vendor to hold responsible and a<br />
single data source for all facets of HR and workforce management that a single ERP solution may afford. Consequently, Kronos will need to continue to demonstrate that the benefits of a specialized workforce management environment outweigh the benefits of a single-provider solution.</p>
<p>At many organizations, IT may favor having fewer vendors and interfaces, so the benefits of real-time access, integrated data collection devices, and ease of use need to be compelling and reach the IT buyer, not just the HR buyer. Kronos will need to convey the right benefits to various constituencies and fashion appropriate strategies and messaging accordingly.</p>
<p>Many organizations continue to operate HR in various silos and maintain separate systems and processes for each of those silos. It is often difficult to challenge the status quo, especially in difficult economic times. Kronos needs to address and attack the status quo with both use case benefits and evidence of cost savings if buyers are to be able to justify the investment in new or improved workforce management solutions and processes.</p>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/86FCV7ue8XM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/kronos-article-about-my-project/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/kronos-article-about-my-project</feedburner:origLink></item>
		<item>
		<title>Featured on SAP Business Transformation Study</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/7biIiX9bM7A/featured-on-sap-business-transformation-study</link>
		<comments>http://mansurovs.com/tech/featured-on-sap-business-transformation-study#comments</comments>
		<pubDate>Wed, 10 Mar 2010 18:08:14 +0000</pubDate>
		<dc:creator>Nasim Mansurov</dc:creator>
				<category><![CDATA[ERP]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[ERP Financials]]></category>
		<category><![CDATA[SAP HCM]]></category>
		<category><![CDATA[SAP Payroll]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=5109</guid>
		<description><![CDATA[I have been featured on SAP Business Transformation Study for Transportation and Logistics/Hospitality vertical on SAP.com. As I have pointed out before, I led Stonebridge Companies to be the first hotel management company to implement an SAP ERP solution in Northern America. The implementation took two painful years and we successfully went live with SAP... <a href=http://mansurovs.com/tech/featured-on-sap-business-transformation-study>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>I have been featured on SAP Business Transformation Study for Transportation and Logistics/Hospitality vertical on SAP.com. As I have pointed out before, I led Stonebridge Companies to be the first hotel management company to implement an SAP ERP solution in Northern America. The implementation took two painful years and we successfully went live with SAP Financials in October of 2007 and SAP HR/Payroll in January of 2009.</p>
<p>Some quick excerpts from the document:</p>
<blockquote><p>Colorado-based Stonebridge Companies implemented the SAP® ERP application to automate paper-based manual processes for payroll, human resources, and financial reporting. The software has made information more available, timely, accurate, and consistent. It has also reduced costs related to system maintenance, external payroll processing, overnight delivery, and vendor late fees. Financial closings have been reduced by five days.</p>
<p>Based in Englewood, Colorado, Stonebridge Companies has developed more than 60 hotels across the United States since its inception in 1991. The firm has tripled in size since 2005 and currently operates more than 40 properties nationwide.</p>
<p>As the company grew, providing meaningful information to corporate managers, property owners, and investors became increasingly difficult, says Nasim<br />
Mansurov, vice president of information technology at Stonebridge. Legacy software for enterprise resource planning treated each property as a separate database – making it cumbersome to get a timely, accurate, and consistent overview of the business or manage data-intensive financial and human resources processes.</p>
<h4>Managing and Maintaining Multiple Interfaces</h4>
<p>Individual hotels would fax hard copies of property financials to the corporate office, where the accounting team would spend several weeks manually compiling and analyzing the data. Having dozens of databases also made it difficult to incorporate new vendors into the system and pay them on time.</p>
<p>The hotels would send vendor invoices via express delivery. Invoice processing involved a long approval chain. Poor tracking resulted in late fees for missed payment deadlines. Responding to guests’ inquiries about their bills was also slow. Use of an external payroll service added<br />
processing complexity and cost. “Interfaces were our biggest issue,” says Mansurov. “The system was costly and a nightmare to maintain. System security and licensing were also challenging.”</p>
<p>With help from the SAP® ERP application, Stonebridge has automated and streamlined the processes it needs to maximize new business opportunities.</p>
<h4>A Single Platform for Process Integration</h4>
<p>Stonebridge considered hotel-specific solutions for automating its information management processes, but decided that a single platform supporting many different areas made more sense. SAP ERP gave Stonebridge strong tools for human resources and financial processing as well as for developing its own hospitality-specific reporting. It was also important to Stonebridge that the software enabled vendor-invoice processing and collaboration with other external partners and that it provided strong support for regulatory compliance. In addition, SAP representatives provided close, personal attention during this major technology decision.</p>
<h4>Greater Connectivity, Efficiency, and Transparency</h4>
<p>With the new software in place, most data is captured electronically, and information is much more timely, consistent, and transparent. Hotel-specific reports with embedded statistics that Stonebridge developed in-house provide key performance indicators to help the company manage its business more effectively.</p>
<p>Individual hotels are fully connected to the corporate office, and new safety and control mechanisms let hotel staff enter and retrieve data themselves, says<br />
Stonebridge CFO David Womack. He adds that hotel managers now handle all “hire to retire” processing for employees at their own property.</p>
<p>By automating its payroll, Stonebridge has cut processing time from one full day to several hours, eliminated two weeks of time spent on post-payroll issues, and reduced the potential for litigation due to improper payroll payments. By taking its payroll in-house, the company has also cut costs for external payroll processing. It has realized other savings through lower costs for document delivery and reduced late fees.</p>
<p>“We’ve cut five days off our financial closings and are managing our cash flow more effectively,” Womack says. “Our new state-of-the art platform should also make it easier to add new properties and will be an important competitive edge in attracting new clients, partners, and investors.&#8221;</p></blockquote>
<p><a  href="http://download.sap.com/solutions/business-suite/erp/customers/download.epd?context=919935DCD2A91CB55A825C12B2FD807C366E5B0F1F520FDB111FD60D53B921198CC19C41E07A1161A7B55F1246F8740150A2A55FC32B33D1" rel="nofollow">Here is the link</a> to the full BTS (Adobe PDF Reader is required)</p>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/7biIiX9bM7A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/featured-on-sap-business-transformation-study/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/featured-on-sap-business-transformation-study</feedburner:origLink></item>
		<item>
		<title>How to Update Category and Tag Descriptions in WordPress</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/iNzxcV-qasQ/how-to-update-category-and-tag-descriptions-in-wordpress</link>
		<comments>http://mansurovs.com/tech/how-to-update-category-and-tag-descriptions-in-wordpress#comments</comments>
		<pubDate>Thu, 18 Feb 2010 01:48:18 +0000</pubDate>
		<dc:creator>Nasim Mansurov</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Tips]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=5105</guid>
		<description><![CDATA[Do you ever put category and tag descriptions while creating them? I used to do it in the beginning, but then as I got busy I started simply inserting tags and categories without any descriptions attached to them. Over time, I was getting a little annoyed by the fact that some categories and tags have... <a href=http://mansurovs.com/tech/how-to-update-category-and-tag-descriptions-in-wordpress>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Do you ever put category and tag descriptions while creating them? I used to do it in the beginning, but then as I got busy I started simply inserting tags and categories without any descriptions attached to them. Over time, I was getting a little annoyed by the fact that some categories and tags have names, while others do not, so I created a quick SQL code to take care of this issue. Basically, the SQL code just goes through all WordPress tags and categories and copies the category/tag name into the description field.</p>
<p><strong>Make sure to backup your database before you do this!</strong></p>
<p>Here is the code for updating category description:</p>
<pre class="brush: plain;">UPDATE wp_term_taxonomy LEFT JOIN wp_terms ON wp_term_taxonomy.term_id = wp_terms.term_id
SET wp_term_taxonomy.description = wp_terms.name
WHERE wp_term_taxonomy.taxonomy = 'category'</pre>
<p>And here is the code for updating tag description:</p>
<pre class="brush: plain;">UPDATE wp_term_taxonomy LEFT JOIN wp_terms ON wp_term_taxonomy.term_id = wp_terms.term_id
SET wp_term_taxonomy.description = wp_terms.name
WHERE wp_term_taxonomy.taxonomy = 'post_tag'</pre>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/iNzxcV-qasQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/how-to-update-category-and-tag-descriptions-in-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/how-to-update-category-and-tag-descriptions-in-wordpress</feedburner:origLink></item>
		<item>
		<title>WordPress does not Import Categories and Tags</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/XF5fR_aSd6s/wordpress-does-not-import-categories-and-tags</link>
		<comments>http://mansurovs.com/tech/wordpress-does-not-import-categories-and-tags#comments</comments>
		<pubDate>Thu, 18 Feb 2010 01:36:05 +0000</pubDate>
		<dc:creator>Nasim Mansurov</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Tips]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=5099</guid>
		<description><![CDATA[I recently had to go through the nightmare of converting from standard WordPress installation to WordPress MU. The reason why I say &#8220;nightmare&#8221;, is because the process turned out to be rather complex and painful in terms of keeping all data consistent. My original plan was to simply export the data from WordPress standalone and... <a href=http://mansurovs.com/tech/wordpress-does-not-import-categories-and-tags>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>I recently had to go through the nightmare of converting from standard WordPress installation to WordPress MU. The reason why I say &#8220;nightmare&#8221;, is because the process turned out to be rather complex and painful in terms of keeping all data consistent. My original plan was to simply export the data from WordPress standalone and then import it into WordPress MU. But after I imported everything, things did not work out as well as I hoped they would. For whatever reason, all of my categories and tags were messed up and when I went to the categories page in WordPress admin page, the categories showed 0 posts and the same thing happened with my tags.</p>
<p>I then tried to look for other ways to do this right and stumbled upon a suggestion in Google to simply rename the database table names. Everything seemed to work perfectly, until I started encountering database inconsistency issues with three separate blogs in one WordPress MU installation. It turned out that WordPress MU works by assigning one category/tag ID for the same category name that is used across different blogs. Inevitably, my categories and tags eventually started conflicting with different category IDs assigned to the same category/tag.</p>
<p>Wanting to fix this problem as soon as possible, I went back and tried to do it right from the beginning. It turns out that the best way to do it without creating any potential database inconsistencies is through export/import process within WordPress. Once I exported and imported everything, the problem with categories and tags not showing up came back to haunt me!</p>
<p>I looked at the data on table level and everything seemed to be mapped correctly, very similar to what I had in my original WordPress installation. I kept on digging until I accidentally tried something and it worked! I tried assigning the first WordPress post &#8220;Hello world!&#8221; to one of the categories and voila &#8211; it showed up! So, if you are experiencing the same problem with categories and tags in WordPress, here is what you should do:</p>
<ol>
<li>Make sure not to delete the original &#8220;Hello World!&#8221; post that gets automatically created by WordPress. If you have already deleted it, create a new dummy post that you can later delete.</li>
<li>Make sure that the WordPress import process is successfully finished.</li>
<li>After all posts and pages have been imported, go to &#8220;Edit&#8221; under &#8220;Posts&#8221; and edit the &#8220;Hello World!&#8221; or dummy post.</li>
<li>Go through each of the categories and put a checkmark in front of every single category.</li>
<li>Save the post.</li>
<li>Visit both the &#8220;Categories&#8221; page in the admin section and the main page and make sure that all categories show up correctly with the correct number of posts attached to them.</li>
</ol>
<p>This will fix the category mapping issue. Now let&#8217;s move on to tags.</p>
<p>The problem with tags is much more complex than with categories. If you have a large site with thousands of tags, you do not want to be manually inputting those one by one. Gladly, I found a good solution that worked for me!</p>
<p>You will need to have access to an SQL query tool to grab the tags data. Fire up PHPMyAdmin or whatever else you are using and type the following query against your current WordPress MU database:</p>
<pre class="brush: plain;">SELECT CONCAT(wp_1_terms.name, ',') FROM wp_1_terms LEFT JOIN wp_1_term_taxonomy ON wp_1_terms.term_id = wp_1_term_taxonomy.term_id
WHERE wp_1_term_taxonomy.taxonomy = 'post_tag'</pre>
<p>The above query should return a bunch of lines with all of your tags with a comma at the end. Obviously, you will need to change the wordpress blog ID if you are using a different blog ID than &#8220;1&#8243;. Start from the top and select everything all the way to the bottom, then press CTRL+C to copy the tags data.</p>
<p>Next, go to the same &#8220;Hello World!&#8221; dummy post and copy-paste the tags data into the tags input field and save the post.</p>
<p>All of your tags should now be correctly mapped! :)</p>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/XF5fR_aSd6s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/wordpress-does-not-import-categories-and-tags/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/wordpress-does-not-import-categories-and-tags</feedburner:origLink></item>
		<item>
		<title>SiteWide Tags Categories Showing as Numbers</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/jbFPkGsdFgk/sitewide-tags-categories-showing-as-numbers</link>
		<comments>http://mansurovs.com/tech/sitewide-tags-categories-showing-as-numbers#comments</comments>
		<pubDate>Tue, 16 Feb 2010 23:57:16 +0000</pubDate>
		<dc:creator>Nasim Mansurov</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Plugins]]></category>
		<category><![CDATA[Wordpress Tips]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=5038</guid>
		<description><![CDATA[This is another fix to Donncha&#8217;s Sitewide Tags plugin that eliminates the problem of having certain categories show up as numbers in the sitewide blog in WordPress MU. In my WordPress MU installation, there was a problem with specific categories showing up as numbers for whatever reason (I figured out the reason later and went... <a href=http://mansurovs.com/tech/sitewide-tags-categories-showing-as-numbers>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>This is another fix to <a  href="http://wordpress.org/extend/plugins/wordpress-mu-sitewide-tags/" rel="nofollow">Donncha&#8217;s Sitewide Tags</a> plugin that eliminates the problem of having certain categories show up as numbers in the sitewide blog in WordPress MU. In my WordPress MU installation, there was a problem with specific categories showing up as numbers for whatever reason (I figured out the reason later and went through the nightmare of permanently fixing it). When I looked at the sitewide blog tables, some of the categories were written as numbers instead of full category names and category slugs. Apparently, Donncha&#8217;s plugin relies on WordPress MU handling the category IDs that are supposed to be the same across all blogs &#8211; i.e. a category in blog 1 should have the same category ID as a category in blogs 2, as long as the category names and slugs are the same. When I looked at my installation, I found out that I had different category IDs for the same categories, due to the fact that I simply renamed some of the main tables instead of importing/exporting them when I migrated to WordPress MU from standalone WordPress installation. I certainly didn&#8217;t feel like redoing everything from scratch and looked for an alternative solution that would work for me, so here it is.</p>
<p>Find the line: &#8220;$post-&gt;post_category = wp_get_post_categories( $post_id );&#8221; and modify the below foreach code as shown below:</p>
<pre class="brush: plain;">
    foreach( $post-&gt;post_category as $c ) {
        $cat = get_category( $c );
        $cats[] = array('name' =&gt; wp_specialchars($cat-&gt;name), 'slug' =&gt; wp_specialchars($cat-&gt;slug));
    }
</pre>
<p>Then, locate the first &#8220;switch_to_blog( $tags_blog_id );&#8221; line and modify the code as shown below:</p>
<pre class="brush: plain;">
    switch_to_blog( $tags_blog_id );

    /*
     * We first need to insert the categories into the new 'terms' table
     * Then we need to get the ID of the category and use it while inserting the post
     */
    if( is_array( $cats ) &amp;&amp; !empty( $cats ) ) {
        foreach( $cats as $t =&gt; $d ) {
            /* Here is where we insert the category */
            wp_insert_category( array('cat_name' =&gt; $d['name'], 'category_description' =&gt; $d['name'], 'category_nicename' =&gt; $d['slug'], 'category_parent' =&gt; '') );

            /* Now get the category ID to be used for the post */
            $category_id[] = $wpdb-&gt;get_var( &quot;SELECT term_id FROM wp_&quot; . $tags_blog_id . &quot;_terms WHERE slug = '&quot; . $d['slug'] . &quot;'&quot; );
        }
    }
</pre>
<p>The last change is to use the category IDs that we grabbed above while posting the entry. Locate the line that says &#8220;$post-&gt;comment_status = &#8216;closed&#8217;;&#8221; and insert a single line as shown below right above wp_insert_post:</p>
<pre class="brush: plain;">
        /* Use the category ID in the post */
        $post-&gt;post_category = $category_id;

        $p = wp_insert_post( $post );
</pre>
<p>That&#8217;s it, now all categories will always have the right category name/slug in your sitewide tags blog!<br />
P.S. The above code changes have already been applied to SiteWide tags plugin by Donncha, so make sure to get the latest version from wordpress.org.</p>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/jbFPkGsdFgk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/sitewide-tags-categories-showing-as-numbers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/sitewide-tags-categories-showing-as-numbers</feedburner:origLink></item>
		<item>
		<title>How to Stop Duplicate Twitter Notifications in SiteWide Tags</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/tuzwWYeGAJ0/how-to-stop-duplicate-twitter-notifications-in-sitewide-tags</link>
		<comments>http://mansurovs.com/tech/how-to-stop-duplicate-twitter-notifications-in-sitewide-tags#comments</comments>
		<pubDate>Mon, 15 Feb 2010 21:57:43 +0000</pubDate>
		<dc:creator>Nasim Mansurov</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Plugins]]></category>
		<category><![CDATA[Wordpress Tips]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=5032</guid>
		<description><![CDATA[If you are using Donncha&#8217;s Sitewide Tags plugin for WordPress MU along with Alex King&#8217;s Twitter Tools, you might get frustrated with the fact that you will see two duplicate notifications on Twitter &#8211; one from the original blog entry, and one from the sitewide blog. Here is how you can stop duplicate twitter tools... <a href=http://mansurovs.com/tech/how-to-stop-duplicate-twitter-notifications-in-sitewide-tags>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>If you are using <a  href="http://wordpress.org/extend/plugins/wordpress-mu-sitewide-tags/" rel="nofollow">Donncha&#8217;s Sitewide Tags</a> plugin for WordPress MU along with <a  href="http://wordpress.org/extend/plugins/twitter-tools/" rel="nofollow">Alex King&#8217;s Twitter Tools</a>, you might get frustrated with the fact that you will see two duplicate notifications on Twitter &#8211; one from the original blog entry, and one from the sitewide blog.</p>
<p>Here is how you can stop duplicate twitter tools notifications in sitewide tags &#8211; you will have to edit Twitter Tools:</p>
<p>Open up &#8220;twitter-tools.php&#8221; in the plugin folder, then locate the &#8220;do_tweet&#8221; function in the code. Right under &#8220;function do_tweet($tweet = &#8221;) {&#8220;, insert the below code:</p>
<pre class="brush: plain;">
		global $wpdb;
		if (isset($wpdb-&gt;blogid) &amp;&amp; $wpdb-&gt;blogid == &quot;4&quot;) {
			return false;
		}
</pre>
<p>My sitewide blog ID is &#8220;4&#8243;, so if yours is different, make sure to change the number to the corresponding blog ID. You can locate the blog ID in wpmu-blogs.php page. Save the file and you are done!</p>
<p>I know this is not the most elegant way of doing this, so if you come up with a better method, please let me know.</p>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/tuzwWYeGAJ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/how-to-stop-duplicate-twitter-notifications-in-sitewide-tags/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/how-to-stop-duplicate-twitter-notifications-in-sitewide-tags</feedburner:origLink></item>
		<item>
		<title>ProcMail Installation and Configuration Guide</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/8SjrcKVlueo/procmail-installation-and-configuration-guide</link>
		<comments>http://mansurovs.com/tech/procmail-installation-and-configuration-guide#comments</comments>
		<pubDate>Sat, 06 Feb 2010 05:19:35 +0000</pubDate>
		<dc:creator>Karim Elatov</dc:creator>
				<category><![CDATA[Linux-Unix]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[ProcMail]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=4961</guid>
		<description><![CDATA[ProcMail stands for Mail Processing, it allows you to process your incoming mail and then sort it into separate folders/file. ProcMail can be used to setup a vacation message or to forward your mail to another email address. All in all, it can be used for many things and I don&#8217;t even know them all... <a href=http://mansurovs.com/tech/procmail-installation-and-configuration-guide>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>ProcMail stands for Mail Processing, it allows you to process your incoming mail and then sort it into separate folders/file. ProcMail can be used to setup a vacation message or to forward your mail to another email address. All in all, it can be used for many things and I don&#8217;t even know them all :) I will break this guide into two parts: install and setup.</p>
<h3>1) Install ProcMail</h3>
<p>Download the source from the following URL: <a  href="http://www.procmail.org">http://www.procmail.org</a>. You should get a file that looks similar to this  <strong>procmail-3.22.tar.gz</strong>. Now let&#8217;s begin installing :)</p>
<pre class="brush: plain;">mv procmail-3.22.tar.gz /tmp; cd /tmp
tar xzf procmail-3.22.tar.gz; cd procmail-3.22
make
make BASENAME=/usr/local/procmail install
</pre>
<p><span id="more-4961"></span></p>
<h3>2) After Install Instructions</h3>
<pre class="brush: plain;">sudo chown 0:0 -R /usr/local/procmail
sudo chmod 6755 /usr/local/procmail/bin/procmail
sudo chmod 2755 /usr/local/procmail/bin/lockfile
</pre>
<h3>3) Setup Instructions</h3>
<p>Any time mail comes to the server, whether the mail server is running sendmail or exim or any other mail server application, by default most of the mail services look to &#8220;~/.forward&#8221; file. If the file exists then mail is either forwarded to the email address that is in the .forward file, or the mail server executes whatever is in that file. To  use procmail we need to add an entry in .forward so it is executed whenever an email comes in. So if we place the following into our &#8220;~/.forward&#8221; file we should be all set.</p>
<pre class="brush: plain;">|IFS=' '&amp;&amp;exec /usr/local/procmail/bin/procmail -f-||exit 75 #username</pre>
<p>*note replace username with your username :)</p>
<h3>4) Example to use spamassassin with procmail</h3>
<p>Spamassassin is a linux utility which finds spam in mail and adds a header to the email message to mark as spam. Spamassassin is a perl-based application. Using your favorite text editor put the following into your &#8220;~/.procmailrc&#8221;</p>
<pre class="brush: plain;">#
# .procmailrc
#
DEFAULT=/var/mail/$LOGNAME
UMASK=007

# Look for spam
:0fw
|/usr/local/perl/bin/spamassassin
:0
*^X-Spam-Flag:Yes
*^Subject: POTENTIAL SPAM:
$HOME/mail/spam

:0:
$DEFAULT</pre>
<p>Here is what happens, each message is run through the spamassassin utility which if it is spam, will mark it so, it will do it by adding the &#8220;X-Spam-Flag:Yes&#8221; header field and prepend &#8220;POTENTIAL SPAM:&#8221; to the subject line. So after we run the message through spamassassin when then check if the above has been set and if so we move the message to the spam folder, see what was simple, wasn&#8217;t it ? :)</p>
<h3>5) Example to forward messages to your gmail account</h3>
<p>Place the following into your &#8220;~/.procmailrc&#8221;</p>
<pre class="brush: plain;">
#
# .procmailrc
#
DEFAULT=/var/mail/$LOGNAME
UMASK=007

# Forward all mail to gmail
:0c
! your_gmail_address@gmail.com

:0:
$DEFAULT</pre>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/8SjrcKVlueo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/procmail-installation-and-configuration-guide/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/procmail-installation-and-configuration-guide</feedburner:origLink></item>
		<item>
		<title>Welcome to our new "Tech" section!</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/PtAzhpo9muc/welcome-to-our-new-tech-section</link>
		<comments>http://mansurovs.com/tech/welcome-to-our-new-tech-section#comments</comments>
		<pubDate>Thu, 04 Feb 2010 17:50:08 +0000</pubDate>
		<dc:creator>Nasim Mansurov</dc:creator>
				<category><![CDATA[Technology News]]></category>
		<category><![CDATA[Site News]]></category>

		<guid isPermaLink="false">http://mansurovs.com/tech/?p=4959</guid>
		<description><![CDATA[Welcome to our new Technology section! Here, we will be posting guides, &#8220;howto&#8221;s and other useful information for technology gurus and geeks! As I pointed out in my quick post here, Karim will be heading this section and share his technology tips and tricks. I haven&#8217;t yet had a chance to work on feeds and... <a href=http://mansurovs.com/tech/welcome-to-our-new-tech-section>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Welcome to our new Technology section! Here, we will be posting guides, &#8220;howto&#8221;s and other useful information for technology gurus and geeks!</p>
<p>As I pointed out in my quick post <a  href="/our-new-technology-section">here</a>, Karim will be heading this section and share his technology tips and tricks. I haven&#8217;t yet had a chance to work on feeds and other custom enhancements for this section, but I&#8217;m planning to work on them within the next couple of weeks.</p>
<p>Stay tuned! We are very excited about this!</p>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/PtAzhpo9muc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/welcome-to-our-new-tech-section/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/welcome-to-our-new-tech-section</feedburner:origLink></item>
		<item>
		<title>Another book review from Packt Publishing</title>
		<link>http://feedproxy.google.com/~r/mansurovs-tech/~3/kU31y0XMjhg/another-book-review-from-packt-publishing</link>
		<comments>http://mansurovs.com/tech/another-book-review-from-packt-publishing#comments</comments>
		<pubDate>Fri, 11 Dec 2009 04:18:02 +0000</pubDate>
		<dc:creator>Nasim Mansurov</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[ModSecurity]]></category>
		<category><![CDATA[Qmail]]></category>

		<guid isPermaLink="false">http://mansurovs.com/?p=4833</guid>
		<description><![CDATA[Packt Publishing approached me once again to review their upcoming book &#8220;ModSecurity 2.5&#8221; after my last review of their &#8220;Qmail Quickstarter&#8221; book. It is supposed to be a detailed book on Apache Module Mod_Security, which I have been using since the very early versions of the product. I agreed to review it and they already... <a href=http://mansurovs.com/tech/another-book-review-from-packt-publishing>read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.packtpub.com" rel="nofollow">Packt Publishing</a> approached me once again to review their upcoming book &#8220;<a  href="http://www.packtpub.com/modsecurity-2-5/book" rel="nofollow">ModSecurity 2.5</a>&#8221; after <a  href="http://mansurovs.com/tech/qmail-quickstarter-book-review">my last review</a> of their &#8220;<a  href="http://www.packtpub.com/Qmail/book" rel="nofollow">Qmail Quickstarter</a>&#8221; book. It is supposed to be a detailed book on Apache Module <a  href="http://www.modsecurity.org" rel="nofollow">Mod_Security</a>, which I have been using since the very early versions of the product. I agreed to review it and they already shipped it to me, so I will post a review of the book sometime next week, if the time allows.</p>
<p>I really like the books from Packt Publishing, because they cover some specific topics that very few other publishers write about. Their books are a great reference for system administrators and tech junkies like me :)</p>
<!-- PHP 5.x --><img src="http://feeds.feedburner.com/~r/mansurovs-tech/~4/kU31y0XMjhg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mansurovs.com/tech/another-book-review-from-packt-publishing/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://mansurovs.com/tech/another-book-review-from-packt-publishing</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.552 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-07-22 17:44:34 -->
