Link to home
Start Free TrialLog in
Avatar of Nick
Nick

asked on

Upgrade issue - hash problems

Hi All,

I am attempting to update sendmail from 8.11.redhat.version (no more updates) to latest 8.13.1

All builds great, and I built sendmail.cf from my existing sendmail.mc (with a few changes to suit).

I get these errors on starting:

554 5.0.0 /etc/mail/sendmail.cf: line 158: readcf: map mailertable: class hash not available
554 5.0.0 /etc/mail/sendmail.cf: line 161: readcf: map virtuser: class hash not available
554 5.0.0 /etc/mail/sendmail.cf: line 166: readcf: map access: class hash not available

The files all exist in /etc/mail/ as existing sendmail loads them at start.

Ideas what I need to correct this?  All I need is a receiving/sending sendmail server (one user, me) tied down with no relaying.

TIA,

Nick
Avatar of PsiCop
PsiCop
Flag of United States of America image

According to my copy of _Sendmail_3rd_Edition_ by Bryan Costales (ISBN 1-56592-839-3), on page 888 (S23.7.7), the hash database map is only available if sendmail is compiled with NEWDB defined and the Berkeley or Sleepycat db(3) library linked.
So, go to http://www.sleepycat.com/download/db/index.shtml and download the database, compile and install it.

Then, when you rebuild sendmail, in the ./devtools/Site/site.config.m4 file, put:

APPENDDEF(`confLIBDIRS', `-L/path/to/BerkeleyDB/lib')
APPENDDEF(`confINCDIRS', `-I/path/to/BerkeleyDB/include')
APPENDDEF(`confENVDEF', `-DNEWDB')

Sendmail will be rebuilt with the appropriate support.
Avatar of Nick
Nick

ASKER

I have just spent 2 hours fighting this... I must have the Berkley DB as existing sendmail uses it, and I built the access.db using makemap ages ago.

Also, sendmail info states that if 'libdb.so' exists, it will build NEWDB anyway.

I have:

/usr/lib/libdb.so.2 -> libdb1.so.2
/usr/lib/libdb.so -> /usr/lib/libdb2.so.3

If I build with the in /devtools/Site/site.config.m4 I get:

defines../../include/sm/bdb.h:17:17: db.h: No such file or directory

I tried hooking a symlink libdb.so to point to either of those files, but same build error arises.

So it looks like I am missing headers.

I am not sure to update and install berkley DB, as it could break my existing sendmail.

...and I thought configuring sendmail to work was hard... heh.

OK, lets change the tact on this question.  I am a home user, using sendmail just to receive and send mail from my hosted domain here.  Do I need to use DB's at all?

Nick

Avatar of Nick

ASKER

Typo:

/usr/lib/libdb.so -> /usr/lib/libdb2.so.3

should have been:
/usr/lib/libdb.so.3 -> libdb2.so.3

I cut and paste wrong line in scroll.

Nick
Hash is only used in table lookups, like the "virtusertable" and "access" etc - you probably don't need it, but I suspect something somewhere will need to be fixed if you try to run without it.

Perhaps you're building wrongly?  Here's how you should be doing it:-

cd /usr/src/redhat/SPECS/
rpmbuild -bc sendmail.spec

Why do you need 8.13.1 ?  Maybe something else will work too?
ASKER CERTIFIED SOLUTION
Avatar of PsiCop
PsiCop
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Nick

ASKER

--> Chris, I haven't got Redhat source - as I said, Redhat stopped free up2date ages ago - I am using sendmail 8.13.1 source.


OK, I managed to get a berkley db_deveL RPM to the db installed.  That then allowed berkley* db to build correctly.

A bit of faffing about with sendmail.mc to get it all to work, and all OK.

After this, I just upgraded an old server at work... running Linux 2.2.26 - I got through sendmail install in about 10 minutes now I know what to do/what gotcha's on the way.

Thanks,

Nick
Great word Berk... Cockney Rhyming slang -> Berkley Hunt...
Nick,

I appreciate you accepting my answer, but I don't understand the rather low grade of C. What did I do wrong?
Avatar of Nick

ASKER

Nothing, really, but I marked lowest grade as I guessed DB headers were missing (the problem), and also as I read and stated here sendmail auto-builds -NEWDB if it finds libdb.so - which it did.

So you confirmed what I found out and learnt before your initial comment.

No offence meant ;).

C == average BTW, not poor.  I also thought my 500 points was a bit high for this type of question too, so it's swings and roundabouts.

Nick
If you solved the issue on your own, then it would have been better to post a (free) Question in the Community Support TA (https://www.experts-exchange.com/Community_Support/) and request that this Question be PAQed and your points refunded. A grade of C means that I didn't do a good job of providing an answer. You can still make that request (be sure to include a link to this Question).
Avatar of Nick

ASKER

No, I will not do that.  Your help is very much appreciated, and two heads are better than one - it's nice to have a conference.

I am bound to have further questions, so I will repay :)

Grade C == you answered the question!  You didn't do a 'bad job' (leave the politicians to do that) - at the time I thought because with a 'little' help I sussed it, you maybe shouldn't get a 'good' or 'great' mark - all grades are winners in my eyes?

I have no qualms about 'modding up' so to speak - can that be done?

Nick
I appreciate your feedback.

If you'd like to change the grade (which does NOT affect the amount of points you spend), then post a Question in the Community Support TA (as described above) and request a Grade Change. A moderator can do it for you (or re-open the Question and let you grade it again).
Avatar of Nick

ASKER

I have already mailed a mod... you will get a B soon :)

Nick
P.S. get ready for my next question (a work question - not a home question)... it's a stinker! ;)
The grade has been changed as requested.

RomMod
Community Support Moderator