MoonPoint Support Logo


Shop Amazon Warehouse Deals - Deep Discounts on Open-box and Used ProductsAmazon Warehouse Deals

Advanced Search
Sun Mon Tue Wed Thu Fri Sat

Sat, Apr 29, 2006 1:24 pm

PHP - Exec

The PHP exec function can be used to call external programs. For instance, if I wish to create a webpage that displays the MD5 checksum for a file, I can call the md5sum program that is present on Unix and Linux systems. If I called the program from a shell prompt on the system, I would see something like the following:

# md5sum file.txt
529dc67dde9486a1af8353915ab94870 file.txt

Using PHP, I can get the MD5 checksum with the following code:


$md5sum = exec('md5sum '.$filename);
$md5sum = substr($md5sum,0,strpos($md5sum,' '));


The results of the call to the external md5sum program are stored in a variable named md5sum. The md5sum program returns the MD5 checksum followed by a space and then the filename. The filename can be stripped away by using strpos to determine the position of the space in the string and then substr can be used to remove all of the charcters from the string starting with the space to the end of the string.

Since I need to calculate the MD5 checksum, aka hash, regularly, I can create a function that calls the external md5sum program to do so.

function md5sum($filename) {

  $hash = exec('md5sum '.$filename);
  // The md5sum command returns the MD5 hash followed by a space and the
  // filename. Remove the space and filename.
  $hash = substr($hash,0,strpos($hash,' '));


But what if you call an external program that returns multi-line output. If you just store the results obtained by using exec to call the program, you will get only the last line of output for the program.

For instance, I can use the command rpm -qp --requires file.rpm to determine what other software is required by a RPM file. If I call that program with PHP's exec function and assign the results to a variable, requires, however, I get just the last line of the results of calling rpm -qp --requires, which produces multiline output.

$requires = exec('rpm -qp --requires '.$filename);

What I need to do instead, is put the output of the external command into an array. When using the exec function, I can specify an array to be used to hold the output, by putting a comma after the command to be called and then specifying an array to hold the output of the command.

<?php exec(external_command, $output_array); ?>

For instance, to obtain the output from the rpm command above, I could use the following code:


exec('rpm -qp --requires '.$filename, $requires);

for ($i = 0; $i < count($requires); $i++) {
   print "$requires[$i]<br>\n";


The exec function is used to call the program, storing the output from the rpm command in the array $requires. I can then use a for loop to print each of the lines in the array, putting a <br> tag at the end of each line, so that the HTML output is more readable and matches that of the program. I also use /n to create a new line at the end of each line of output so the source HTML code is more readable, also.


  1. PHP: exec - Manual
  2. MD5
  3. Programming PHP: Chapter 5: Arrays

[/languages/php] permanent link

Sun, Apr 23, 2006 8:40 pm

Report of SORBS listing to EarthLink

I filed a trouble report with EarthLink regarding email from an EarthLink email server being rejected, because the EarthLink server, [], is on the Spam and Open Relay Blocking System (SORBS) spam blacklist. Within minutes I received a response. However, just like the response I received from AOL regarding a similar problem report regarding two AOL email servers on the SORBS blacklist, the response was totally irrelevant to the actual problem. Instead it was a bolierplate reponse on how one can deal with a situation where EarthLink filters are blocking email from another server.

The SORBS entry for the EarthLink server is shown below:

Record Created: Fri Mar 10 09:30:02 2006 GMT
Record Updated: Fri Mar 10 09:30:02 2006 GMT
Additional Information: Received: from ( []) by (Postfix) with ESMTP id 52E7111471 for <[email]>; Fri, 10 Mar 2006 19:06:10 +1000 (EST)

My Problem Report

I provide PC and network support to small businesses in my area and am trying to resolve an email problem for a client who has not been able to receive email from his daughter, who uses EarthLink as her ISP. Her email is being blocked on the server handling his incoming email because it is coming through an EarthLink email server with the IP address (, which is on the Spam and Open Relay Blocking System (SORBS) blocklist (see Will EarthLink contact SORBS about removing the address from the SORBS list?

EarthLink's Response

Thank you for contacting us.

We understand that one of the EarthLink client in your area is unable to receive email from his daughter who uses EarthLink as his ISP.

In addressing the issue we would like to inform you that the issues you're having will require active troubleshooting that can only be accomplished by working with someone in real time. In order to help you efficiently as possible, we recommend that you contact Open Relay department at: "openrelay @"

Open relay is a term used to describe an email server that is not secured against unauthorized access in order to send email. Spam is often generated from such servers, either knowingly or unknowingly.

EarthLink blocks open relay servers from delivering mail to EarthLink. This prevents a great deal of spam from arriving in our customer's email boxes. If someone is trying to send you email, and are being denied for this reason, they will have to speak to the administrator of their email server.

The administrator can choose to secure the server, or contact our Abuse department and prove that their server is in fact secured. If the administrator has secured the server, they need to email and provide the server's IP address or name. Once verified that the relay is closed, the server will be removed from the block list, and EarthLink will begin to accept mail from them.

Please be advised that not all matters may be resolved via email for security reasons or due to the complexity of the issue.

We appreciate your understanding in this regard.

I sent a reply to that message. I'm curious as to whether I can get a relevant response from either ISP within two messages or even at all. I also wonder how many others may have reported the same issues to AOL and EarthLink and gotten the same canned non-germane responses. It is no wonder why an email server may stay on a blocklist for a long time, if one has to get someone at the ISP of the offending server to request a delisting.

[/network/email/spam] permanent link

Sun, Apr 23, 2006 7:37 pm

SORBS Blocking AOL and EarthLink Servers

A user reported today that his daughter had sent email to him today which had been rejected. I obtained her email address from him and then searced the maillog file for that address. I found that her email was rejected because it was coming from an EarthLink email server, [] whose IP address,, is on the Spam and Open Relay Blocking System (SORBS) spam blacklist. I submitted a report of the problem to EarthLink's technical support group. Hopefully, the response I get will be better than the response I got from AOL when I reported the presence of two of their servers on the SORBS list recently.

A few weeks ago I found that email from AOL users was being blocked by the SORBS list, because two AOL servers were on the list. Those AOL servers are listed below:



I reported the problem to AOL then, using an AOL account I keep just for assisting AOL users, and received a response on April 3. However, the response was irrelevant to the problem I reported. I've included my message and AOL's response below:

My Problem Report

User comments = Two AOL email servers are in the Spam and Open Relay Blocking System (SORBS) blocklist (see www. Their IP addresses are and

Because those IP addresses are in the SORBS blocklist, whenever email is sent through those AOL servers, it is rejected by other email servers which use the SORBS blocklist.

I am hoping AOL will address the issue with SORBS.

AOL's Response

From: SPIncomingMail
To: <snipped>
Sent: Mon, 3 Apr 2006 11:24:32 PM Eastern Daylight Time
Subject: Re: I have a problem sending or receiving email in AOL

Dear Jim,

Hi! My name isácille from America Online. I would like to thank you for writing and making us aware of your concern.

I understand that you have questions with AOL blocking e-mail coming from Sorbs domain.

I apologize for the inconvenience this has caused you, Jim.

AOL has developed Solicited Bulk Mailing Guidelines to both aid 'netizens' with their online marketing campaigns and to protect our member base from e-mail abuse.

To learn about AOL's Unsolicited Bulk Mail Policy, please visit

If you believe that Sorbs organization's e-mail provider can adhere to AOL guidelines provided at, please ask their e-mail provider to call our Postmaster Hotline at 703-265-4670 or 1-888-212-5537 and the Postmaster group will evaluate your mailing patterns and resolve any outstanding issues with their server or domain.

AOL has developed a site for Internet users who are experiencing problems sending e-mail to AOL or for people who have questions about AOL's e-mail and junk e-mail policies at

If they would like to test their e-mail server against our database, enter the IP address at

I hope that I have sufficiently provided you with useful information about your inquiry.

If you have other concerns or questions regarding AOL, please do not hesitate to contact us in the future.

You can chat online with a technical support specialist by going to AOL Keyword:
Live Help. My colleagues there are available 24 hours a day to assist you in a secure, one-on-one session.

If you prefer to be assisted via phone, you may call us at our toll-free number:
1-800-827-6364. Calling early in the day usually reduces the waiting time to speak to a consultant.

We are always ready to answer questions and do whatever we can to make your online experience even more enjoyable.

Again, thank you for your patience and understanding on this matter.

AOL Customer Care Consultant

I replied to the AOL message today, since I found the two AOL servers are still on the SORBS list, requesting AOL address the issue with SORBS. The address appears to have been on the list since December 15, 2005. And for the other address I see the following:

Record Created: Sun Apr 25 22:36:02 2004 GMT 
Record Updated: Thu Feb 23 04:29:58 2006 GMT 
Additional Information: Received: from ( []) by server (8.10.2/8.10.2) with ESMTP id k1N2Krh14751 for ; Wed, 22 Feb 2006 20:20:53 -0600 

I would not be surprised if I get a similar non-germane response again, though. There was a time when I recommended America Online (AOL) - I think Ads Online would be a more appropriate name - to novice computer users, but now I wouldn't recommend it to anyone and reports that its membership has been significantly declining don't surprise me.

[/network/email/spam] permanent link

Mon, Apr 17, 2006 8:49 pm

Burst.Com Filed A Patent Infringement Suit Against Apple has filed a patent infringement suit today against Apple Computer, claiming that Apple is infringing on Burst patents for video and audio delivery with Apple's iPod and iTunes products. Apple filed suit against Burst in January seeking to have Burst's patents declared invalid.

Burst and Microsoft wrangled over Burst's patents also. Microsoft eventually capitulated and paid Burst 60 million dollars.


  1. Files Patent Infringement Suit Against Apple Computer
    April 17, 2006
  2. Burst vs Apple
    January 16, 2006

[/software/patents] permanent link

Sun, Apr 16, 2006 10:59 pm

iRows and Opera

I've been using iRows, which is a free online service for creating and storing spreadsheets, to store some spreadsheets so that I can access the information from any system with a web browser. However, I've found that, though the service works fine with Firefox, it is not usable with Opera 8.54. With Opera 8.54, when you try to save a spreadsheet, edit tags, etc. windows open behind the spreadsheet you are working on and it isn't possible to fully access them. I've been able to drag some of the windows to areas on the screen where I can access part of them, but I would not consider the service usable with Opera.

When I checked the FAQ at the iRows website, I found a statement indicating that iRows doesn't work well with the beta 9 version of Opera either. The FAQ states "On Opera-9 not all features work well. We are waiting for Opera to fix a few issues in the beta version."

[/network/web/services] permanent link

Fri, Apr 14, 2006 5:42 pm

Moving ClientApps Folder

There are a number of steps you can take to free disk space on a Windows Small Business Server (SBS) 2003 system drive, if you are running low on disk space. You can remove the uninstall folders for hotfixes, compress folders, etc. A step that may give you back 750 MB to a GB of space is to move the ClientApps folder.

[ More Info ]

[/os/windows/server2003] permanent link

Thu, Apr 13, 2006 4:32 pm

Blosxom Calendar Plugin on a Solaris System Using Apache

I installed the calendar plugin for the Blosxom blogging software on a Solaris 10 system. I put the following line in Blosxom's head.html file, so that a calendar with links to entries made on particular dates would appear at the top of the blog's webpages:


When I then tried to view the blog, I received the message below:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

When I created a state subdirectory beneath the Blosxom plugins directory where I extracted the calendar Perl script and then changed the owner and group for the calendar file to those under which the Apache webserver software on the system runs, the problem ended. By default, on a Solaris 10 system running Apache, Apache runs with a userid of webservd and a group of webservd, so you can change those values for the calendar file with the commands below:

chown webservd apache; chgrp webservd apache

[/os/unix/solaris] permanent link

Mon, Apr 10, 2006 9:46 pm

Tuttle City Manager Threatens CentOS Developer

I came across a reference in an InfoWorld column by Robert Cringeley, Okie calls cops, Dell's Ditty flops, to an amusing exchange between the city manager for Tuttle, Oklahoma and a CentOS developer, today. The server on which the Tuttle website resided crashed. It was rebuilt by the city's hosting provider, but the server was not configured properly afterwards to display the city's webpage, leading to a default page being displayed instead of the city's homepage.

The city manager, Jerry Taylor, who claims to have twenty-two years in computer systems engineering and operations, but appears to know very little about webservers or operating systems, saw the default Apache webpage one would see on a webserver running the CentOS operating system and contacted a CentOS developer, Johnny Hughes. But, with absolutely no understanding of what he was seeing, he demanded that the CentOS software be removed from his website.

In one email message sent to CenOS he railed "Who gave you permission to invade my website and block me and anyone else from accessing it??? Please remove your software immediately before I report it to government officials!! I am the City Manager of Tuttle, Oklahoma." Mr Hughes tried to explain the situation to him, but Mr. Taylor was apparently incapable of understanding the explanations and replied by threatening to sic the FBI on CentOS. Mr. Hughes took the time to research the problem instead of just ignoring the city manager at that point and did eventually get the city manager to contact his hosting provider. But even then, the city manager did not seem to understand, or at least appreciate, that Mr. Hughes had made an extra effort to solve the city's website problem for the city. Instead he still stated he did not regret threatening Hughes with FBI action, since he believes that was what prompted Hughes to start treating him seriously.

The city has a article on the issue at City manager misunderstanding prompts international response and even has a link to the email transcript of the exchange, which Mr. Hughes posted after getting exasperated with the city manager's behavior and threats. Comments on the article in the city's paper are available in a forum for the paper.


  1. Okie calls cops, Dell's Ditty flops
  2. City manager misunderstanding prompts international response
  3. OR ... why every city council needs at least one geek
    Transcript of the email exchange

[/os/unix/linux/centos] permanent link

Tue, Apr 04, 2006 10:07 pm

Installing Opera 9.0 on Solaris 10

A preview version of the Opera web browser is available for Solaris on x86, i.e. Intel or AMD based PCs. The preview can be downloaded from There are several files available for download for Solaris on Intel systems. I prefer to use a pkg file, so that I can install the software with a pkgadd -d command.

If you download the pkg.gz version, you can install it with the following steps.

  1. Uncompress the .gz file you downloaded.

    # gunzip opera-9.0-20060206.1-static-qt-sol10-intel-local-en.pkg.gz

  2. Use the pkgadd command to install the package on your system. The following command assumes that your current directory is the directory into which you downloaded the package.
    # pkgadd -d ./opera-9.0-20060206.1-static-qt-sol10-intel-local-en.pkg
    The following packages are available:
      1  SCopera     opera
                     (i386) 9.0
    Select package(s) you wish to process (or 'all' to process
    all packages). (default: all) [?,??,q]: 1
    Processing package instance <SCopera> from </home/sysadmin/opera-9.0-20060206.1-static-qt-sol10-intel-local-en.pkg>
    opera(i386) 9.0
    Opera Software ASA
    Using </usr/local> as the package base directory.
    ## Processing package information.
    ## Processing system information.
    ## Verifying disk space requirements.
    ## Checking for conflicts with packages already installed.
    The following files are already installed on the system and are being
    used by another package:
      /usr/local/bin <attribute change only>
    Do you want to install these conflicting files [y,n,?,q] y
    ## Checking for setuid/setgid programs.
    Installing opera as <SCopera>
    Installing part 1 of 1.
    [ verifying class <none> ]
    Installation of <SCopera> was successful.

You should then be able to run Opera with /usr/local/bin/opera & or just opera &, if /usr/local/bin is in your path.

But when I logged off as root and tried to run Opera from my nonprivileged user account, I received an error message.

# exit

bash-3.00$ /usr/local/bin/opera /usr/local/lib/opera/9.0-20060206.1/opera: fatal: open failed: No such file or directory

Since I encountered an error message indicating that could not be found I su'ed to the root account again and looked for the file.

bash-3.00$ su - root
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
# find / -name -print

So the file existed on the system in several places, but Opera was not finding it. From my regular user account, I tried specifying the library search path by setting LD_LIBRARY_PATH to first /usr/sfw/lib and then /opt/sfw/lib, but I still got the same results when I tried to run Opera.

bash-3.00$ LD_LIBRARY_PATH=/opt/sfw/lib
bash-3.00$ echo $LD_LIBRARY_PATH
bash-3.00$ /usr/local/bin/opera /usr/local/lib/opera/9.0-20060206.1/opera: fatal: open failed: No such file or directory

When I tried to list all of the libraries Opera might use with the ldd command, it did not work for the Opera binary.

bash-3.00$ ldd /usr/local/bin/opera
ldd: /usr/local/bin/opera: unsupported or unknown file type

But I then realized I had failed to export LD_LIBRARY_PATH When I took that step, I was then able to run Opera successfully.

bash-3.00$ export LD_LIBRARY_PATH

Using the above method would require that you reissue the commands to set the library path and then export it the next time you logged into the system again. And, if different programs require different library paths, you might have to reset LD_LIBRARY_PATH for particular programs. Alternatively, you can add the applicable library path to your system default search paths with the crle command on a Solaris system. On a Linux system, you would edit /etc/ and run ldconfig.

I prefer Opera over FireFox, since, if the system crashes or I have to restart the browser for any reason, I can return to the state I was in previously within the browser. I understand that a FireFox extension can be installed to provide that capability on FireFox, but that session restoral capability is built into Opera. And Ive never seen Opera wildly consume resources as FireFox seems prone to do on Windows systems where it often gobbles up huge amounts of memory or shoots CPU utilization close to 100%. But when I finally got Opera 9.00 Preview 2 working on my x86-based Solaris 10 system, I was disappointed to discover it doesn't support the SOCKS protocol. I access the Web from that system through a SOCKS proxy server.


  1. Share Library Search Paths

[/os/unix/solaris] permanent link

Tue, Apr 04, 2006 6:12 pm

Obtaining a List of the Libraries Required by a Program

You can use the ldd command on a Unix or Linux system to determine what libraries a program requires. E.g. checking the libraries required by the mboxgrep binary yields the following information:

# ldd /usr/local/bin/mboxgrep =>   /usr/lib/ =>     /usr/lib/ =>  (file not found) =>     /lib/ =>     /lib/

On Solaris systems, you can use the -s option to show the full library search path.

# ldd -s /usr/local/bin/mboxgrep

   find; required by /usr/local/bin/mboxgrep
    search path=/lib:/usr/lib  (default)
    trying path=/lib/
    trying path=/usr/lib/ =>   /usr/lib/

   find; required by /usr/local/bin/mboxgrep
    search path=/lib:/usr/lib  (default)
    trying path=/lib/
    trying path=/usr/lib/ =>     /usr/lib/

   find; required by /usr/local/bin/mboxgrep
    search path=/lib:/usr/lib  (default)
    trying path=/lib/
    trying path=/usr/lib/ =>  (file not found)

   find; required by /usr/local/bin/mboxgrep
    search path=/lib:/usr/lib  (default)
    trying path=/lib/ =>     /lib/

   find; required by /usr/lib/
    search path=/lib:/usr/lib  (default)
    trying path=/lib/

   find; required by /usr/lib/
    search path=/lib:/usr/lib  (default)
    trying path=/lib/

   object=/lib/; filter for /usr/lib/

   object=/lib/; filter for

   find; required by /lib/
    search path=/lib:/usr/lib  (default)
    trying path=/lib/ =>     /lib/

   find; required by /lib/
    search path=/lib:/usr/lib  (default)
    trying path=/lib/


  1. Share Library Search Paths
  2. [/os/unix/commands] permanent link

Sun, Apr 02, 2006 11:25 pm

Furl Meta Tags

Furl allows you to archive webpages you visit. With Furl you can have all of your bookmarks online and available from whatever system you happen to be using at the moment wherever you may be as long as you can access the Internet from that system. When you bookmark webpages with Furl, Furl archives a copy of the webpage for you. Unless you mark bookmarks as private, you can share bookmarks with others, but only you can access the copy of a webpage that has been archived for you when you bookmarked the webpage.

When Furl bookmarks a page for you, you can have an area you have highlighted on the webpage added to a "clipping" field. You can add your own comments on the webpage to a "comment" field. You can pick a category or multiple categories for the webpage. You can create whatever categories you choose. The title for the webpage will also be stored with the bookmark for the page.

Furl will also look for "author" and "date" meta tags on the webpage. If you are creating webpages that others may Furl, you can have Furl automatically fill its "Author" and "Publication Date" fields by adding meta tags like the following to your webpages. The date should be in the form YYYY-MM-DD, i.e. year, month, day form with a leading zero added to one-digit months or days.

<META NAME="author" content="Jane Doe">
<META NAME="date" content="2006-04-02">

[/network/web/archiving/furl] permanent link

Sun, Apr 02, 2006 11:07 pm

Why Was My Email Blocked

I use the following blocklists on my email server:

Blitzed Open Proxy Monitor List
Open Relay Database
Composite Blocking List
McFadden Associates E-Mail Blacklist
Passive Spam Block List

I also download the jwSpamSpy Spam domain blacklist, which is available from once a week and update sendmail's /etc/mail/access file with it to block email from domains on that list.

Recently, I was notified by a couple of users that some of their email correspondents are reporting that email to the users is being rejected. I created a Perl script, find-recipients, to check sendmail maillog files for a specified sender's email address to determine if email from that sender was successfully delivered or rejected.

I found one BellSouth sender's email was being rejected because the IP address of a server handling his outgoing email, [] is on the SORBS blocklist. I submitted a report on the matter to BellSouth by completing their support request form at, but I am not a BellSouth customer, so don't know whether my report will prompt them to address the matter. I also notified the sender of why the message was rejected and provided the URL for the support request form to him, but I would be surprised if the sender reported the problem to BellSouth, his email server provider.

I'm afraid most senders will conclude, if they can send email to most of their correspondents that the problem is not on their end, no matter what explanation I might provide about spam blocklists and why their email was rejected. It is difficult just to get a sender to provide the exact rejection message they get when their email is bounced. Most feel they only need say that email they have sent has bounced, ignoring the cause listed in the bounced messages they receive. And when users on my system pass on reports of email to them not getting through, they often don't even provide me with the email address of the sender or a date when the problem occurred making it virutally impossible to immediately isolate the cause of a particular message being bounced.

I found that email from another sender, whose email was coming from Network Solutions' email servers, was rejected four times on March 8, 2006 and once on March 17, because three Network Solutions email servers were on the SORBS blocklist and one server was on the Passive Spam Block List. Two email messages from him were accepted on March 8 and one on March 29, however.

March 8, 2006 Rejections

PSBL: []

March 17, 2006 Rejections


When I checked the PSBL list, I found the Network Solutions server had been detected as sending spam on March 6, but had been removed from that list on March 8, but apparently after the sender had sent his email on that date when one of his messages was rejected, because of the presence of the server's address on that list.

When I checked the SORBS blocklist, I found that all of the Network Solutions server addresses had been removed from that list also, so it appears his email service provider, Network Solutions, has already addressed the problem.

I added both senders to the list of those for whom no blocklist checks should be made by adding their email addresses to /etc/mail/access with lines like the following:       OK        OK

I then rebuilt the access database with the command makemap hash /etc/mail/access </etc/mail/access

Note: In order to bypass blocklist checks for a sender by adding the sender's email address to /etc/mail/access, delay_checks has to have been specified in the sendmail configuration file, e.g. /etc/mail/ This can be done by adding the line below to and then rebuilding from


You can regenerate the file with the m4 command. You need to restart sendmail afterwards for the change to take effect.

m4 /etc/mail/ > /etc/mail/
/etc/init.d/sendmail restart

[/network/email/spam] permanent link

Once You Know, You Newegg AliExpress by

Shop Amazon Local - Subscribe to Deals in Your Neighborhood

Valid HTML 4.01 Transitional

Privacy Policy   Contact

Blosxom logo