My system:
FreeBSD 5.4
Sendmail 8.13.3/8.13
I want to deliver mails to the cyrus imapd (like described in the
manuel from cyrus). But the problem is sendmail delivers only to
/var/mail.. . If I start sendmail -bt and type in M= it gets:
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> mailer 0 (prog): P=/bin/sh S=EnvFromL/HdrFromL R=EnvToL/HdrToL M=0 U=-1:-1 F=9DFMeloqsu L=0 E=\n T=X-Unix/X-Unix/X-Unix r=10 0 A=sh -c $u
mailer 1 (*file*): P=[FILE] S=parse/parse R=parse/parse M=0 U=-1:-1
F=9DEFMPloqsu L=0 E=\n T=X-Unix/X-Unix/X-Unix r=100 A=FILE  $u
mailer 2 (*include*): P=/dev/null S=parse/parse R=parse/parse M=0
U=-1:-1 F=su L=0 E=\n T=<undefined>/<undefined>/<undefined> r=100
A=INCLUDE $u
mailer 3 (local): P=/usr/libexec/mail.local S=EnvFromSMTP/HdrFromL
R=EnvToL/HdrToL M=0 U=-1:-1 F=/59:@ADFMPSXlmnqswz| L=0 E=\r \n
T=DNS/RFC822/SMTP r=100 A=mail.local -l
mailer 4 (smtp): P=[IPC] S=EnvFromSMTP/HdrFromSMTP
R=EnvToSMTP/EnvToSMTP M=0 U=-1:-1 F=DFMXmu L=990 E=\r\n
T=DNS/RFC822/SMTP r =100 A=TCP $h
mailer 5 (esmtp): P=[IPC] S=EnvFromSMTP/HdrFromSMTP
R=EnvToSMTP/EnvToSMTP M=0 U=-1:-1 F=DFMXamu L=990 E=\r\n
T=DNS/RFC822/SMTP  r=100 A=TCP $h
mailer 6 (smtp8): P=[IPC] S=EnvFromSMTP/HdrFromSMTP
R=EnvToSMTP/EnvToSMTP M=0 U=-1:-1 F=8DFMXmu L=990 E=\r\n
T=DNS/RFC822/SMTP  r=100 A=TCP $h
mailer 7 (dsmtp): P=[IPC] S=EnvFromSMTP/HdrFromSMTP
R=EnvToSMTP/EnvToSMTP M=0 U=-1:-1 F=%DFMXamu L=990 E=\r\n
T=DNS/RFC822/SMTP r=100 A=TCP $h
mailer 8 (relay): P=[IPC] S=EnvFromSMTP/HdrFromSMTP R=MasqSMTP/MasqSMTP
M=0 U=-1:-1 F=8DFMXamu L=2040 E=\r\n T=DNS/RFC822/SMTP r=100 A=TCP $h
>
Is this correct? I expect one line with cyrus...
Any ideas? Thank you in advance.
Here is my sendmail.mc:
divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.29 2003/12/24
21:15:09 gshapiro Exp $')
OSTYPE(freebsd5)
DOMAIN(generic)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
define(`confCW_FILE', `-o /etc/mail/local-host-names')
dnl The group needs to be mail in order to read the sasldb2 file
define(`confRUN_AS_USER',`root:mail')dnl
define(`confDONT_BLAME_SENDMAIL',`GroupReadableSASLDBFile')dnl
define(`confAUTH_MECHANISMS',`LOGIN PLAIN')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
FEATURE(`access_db')
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')
define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
define(`confLOCAL_MAILER', `cyrusv2')
MAILER(local)
MAILER(cyrusv2)
MAILER(smtp)
Kind regards,
Martin
sendmail.mc looks ok.
Standard set of "startup" questions:
1) Have you generated new sendmail.cf after modifying *.mc file?
2) Have you restarted (or HUPed) sendmail daemon?
[ the daemon rememembers "at startup" sendmail.cf ]
3) What is reported by the test commands below?
[ run it as root ]
echo '3,0 userx' | sendmail -bt 
echo '3,0 userx' | sendmail -d21.12 -bt
-- 
[en: Andrew] Andrzej Adam Filip : an...@priv.onet.pl : an...@xl.wp.pl
http://www.sendmail.org/faq/ http://www.sendmail.org/m4/readme.html
http://anfi.homeunix.net/sendmail/B4UAsk-Sendmail.html 
Netcraft Site Rank: 529048
1) Have you generated new sendmail.cf after modifying *.mc file?
Yes, I did. In FreeBSD you can it do very easy (make ...)
2) Have you restarted (or HUPed) sendmail daemon?
[ the daemon rememembers "at startup" sendmail.cf ]
I restarted more then once the hole server.
3) What is reported by the test commands below?
Here is the the output of the two commands:
acsvfbsd02# echo '3,0 userx'|sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> canonify           input: userx
Canonify2          input: userx
Canonify2        returns: userx
canonify         returns: userx
parse              input: userx
Parse0             input: userx
Parse0           returns: userx
ParseLocal         input: userx
ParseLocal       returns: userx
Parse1             input: userx
Parse1           returns: $# local $: userx
parse            returns: $# local $: userx
> acsvfbsd02# echo '3,0 userx' | sendmail -d21-12 -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> canonify           input: userx
Canonify2          input: userx
Canonify2        returns: userx
canonify         returns: userx
parse              input: userx
Parse0             input: userx
Parse0           returns: userx
ParseLocal         input: userx
ParseLocal       returns: userx
Parse1             input: userx
Parse1           returns: $# local $: userx
parse            returns: $# local $: userx
Any ideas?
Regards,
Martin
Contents of the .mc file?
-- 
  Rob MacGregor (BOFH)        Oh my God! They killed init! You bastards!
This landing is gonna get pretty interesting.
	Define "interesting".
Oh God, oh God, we're all going to die?
> Hello Andrzej
> 
> 1) Have you generated new sendmail.cf after modifying *.mc file?
> 
> Yes, I did. In FreeBSD you can it do very easy (make ...)
> 
> 2) Have you restarted (or HUPed) sendmail daemon?
> [ the daemon rememembers "at startup" sendmail.cf ]
> 
> I restarted more then once the hole server.
> 
> 3) What is reported by the test commands below?
> 
> Here is the the output of the two commands:
> 
> acsvfbsd02# echo '3,0 userx'|sendmail -bt
> ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
> Enter <ruleset> <address>
> > canonify           input: userx
> Canonify2          input: userx
> Canonify2        returns: userx
> canonify         returns: userx
> parse              input: userx
> Parse0             input: userx
> Parse0           returns: userx
> ParseLocal         input: userx
> ParseLocal       returns: userx
> Parse1             input: userx
> Parse1           returns: $# local $: userx
> parse            returns: $# local $: userx
It looks like sendmail.cf generated from *.mc file without local mailer
"redirection" you have in your *.mc file:
define(`confLOCAL_MAILER', `cyrusv2')
 
> > acsvfbsd02# echo '3,0 userx' | sendmail -d21-12 -bt
It should be "-d21.12" but first test was sufficient.
 
> Any ideas?
I bet on some problems during *.mc -> sendmail.cf conversion.
-- 
[en: Andrew] Andrzej Adam Filip : an...@priv.onet.pl : an...@xl.wp.pl
http://www.sendmail.org/faq/ http://www.sendmail.org/m4/readme.html
http://anfi.homeunix.net/sendmail/B4UAsk-Sendmail.html 
Netcraft Site Rank: 530672
> schweize...@gmail.com wrote:
> > Hello Andrzej
> > 
> > 1) Have you generated new sendmail.cf after modifying *.mc file?
> > 
> > Yes, I did. In FreeBSD you can it do very easy (make ...)
> <---SNIP--->
> > Any ideas?
> 
> Contents of the .mc file?
It was posted at the end of post starting the thread.
-- 
[en: Andrew] Andrzej Adam Filip : an...@priv.onet.pl : an...@xl.wp.pl
http://www.sendmail.org/faq/ http://www.sendmail.org/m4/readme.html
http://anfi.homeunix.net/sendmail/B4UAsk-Sendmail.html 
Netcraft Site Rank: 530672
> It looks like sendmail.cf generated from *.mc file without local mailer
"redirection" you have in your *.mc file:
> define(`confLOCAL_MAILER', `cyrusv2')
> I bet on some problems during *.mc -> sendmail.cf conversion.
Here is the mailer partition from sendmail.cf
######################################################################
######################################################################
#####
#####			MAIL FILTER DEFINITIONS
#####
######################################################################
######################################################################
#
######################################################################
######################################################################
#####
#####			MAILER DEFINITIONS
#####
######################################################################
######################################################################
##################################################
###   Local and Program Mailer specification   ###
##################################################
##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
#
#  Envelope sender rewriting
#
SEnvFromL
R<@>			$n			errors to mailer-daemon
R@ <@ $*>		$n			temporarily bypass Sun bogosity
R$+			$: $>AddDomain $1	add local domain if needed
R$*			$: $>MasqEnv $1		do masquerading
#
#  Envelope recipient rewriting
#
SEnvToL
R$+ < @ $* >		$: $1			strip host part
R$+ + $*		$: < $&{addr_type} > $1 + $2	mark with addr type
R<e s> $+ + $*		$: $1			remove +detail for sender
R< $* > $+		$: $2			else remove mark
#
#  Header sender rewriting
#
SHdrFromL
R<@>			$n			errors to mailer-daemon
R@ <@ $*>		$n			temporarily bypass Sun bogosity
R$+			$: $>AddDomain $1	add local domain if needed
R$*			$: $>MasqHdr $1		do masquerading
#
#  Header recipient rewriting
#
SHdrToL
R$+			$: $>AddDomain $1	add local domain if needed
R$* < @ *LOCAL* > $*	$: $1 < @ $j . > $2
#
#  Common code to add local domain name (only if always-add-domain)
#
SAddDomain
Mlocal,		P=/usr/libexec/mail.local, F=lsDFMAw5:/|@qPSXmnz9,
S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL,
		T=DNS/RFC822/SMTP,
		A=mail.local -l
Mprog,		P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
D=$z:/,
		T=X-Unix/X-Unix/X-Unix,
		A=sh -c $u
#####################################
###   SMTP Mailer specification   ###
#####################################
##### $Id: smtp.m4,v 8.64 2001/04/03 01:52:54 gshapiro Exp $ #####
#
#  common sender and masquerading recipient rewriting
#
SMasqSMTP
R$* < @ $* > $*		$@ $1 < @ $2 > $3		already fully qualified
R$+			$@ $1 < @ *LOCAL* >		add local qualification
#
#  convert pseudo-domain addresses to real domain addresses
#
SPseudoToReal
# pass <route-addr>s through
R< @ $+ > $*		$@ < @ $1 > $2			resolve <route-addr>
# output fake domains as user%fake@relay
# do UUCP heuristics; note that these are shared with UUCP mailers
R$+ < @ $+ .UUCP. >	$: < $2 ! > $1			convert to UUCP form
R$+ < @ $* > $*		$@ $1 < @ $2 > $3		not UUCP form
# leave these in .UUCP form to avoid further tampering
R< $&h ! > $- ! $+	$@ $2 < @ $1 .UUCP. >
R< $&h ! > $-.$+ ! $+	$@ $3 < @ $1.$2 >
R< $&h ! > $+		$@ $1 < @ $&h .UUCP. >
R< $+ ! > $+		$: $1 ! $2 < @ $Y >		use UUCP_RELAY
R$+ < @ $~[ $* : $+ >	$@ $1 < @ $4 >			strip mailer: part
R$+ < @ >		$: $1 < @ *LOCAL* >		if no UUCP_RELAY
#
#  envelope sender rewriting
#
SEnvFromSMTP
R$+			$: $>PseudoToReal $1		sender/recipient common
R$* :; <@>		$@				list:; special case
R$*			$: $>MasqSMTP $1		qualify unqual'ed names
R$+			$: $>MasqEnv $1			do masquerading
#
#  envelope recipient rewriting --
#  also header recipient if not masquerading recipients
#
SEnvToSMTP
R$+			$: $>PseudoToReal $1		sender/recipient common
R$+			$: $>MasqSMTP $1		qualify unqual'ed names
R$* < @ *LOCAL* > $*	$: $1 < @ $j . > $2
#
#  header sender and masquerading header recipient rewriting
#
SHdrFromSMTP
R$+			$: $>PseudoToReal $1		sender/recipient common
R:; <@>			$@				list:; special case
# do special header rewriting
R$* <@> $*		$@ $1 <@> $2			pass null host through
R< @ $* > $*		$@ < @ $1 > $2			pass route-addr through
R$*			$: $>MasqSMTP $1		qualify unqual'ed names
R$+			$: $>MasqHdr $1			do masquerading
#
#  relay mailer header masquerading recipient rewriting
#
SMasqRelay
R$+			$: $>MasqSMTP $1
R$+			$: $>MasqHdr $1
Msmtp,		P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP,
E=\r\n, L=990,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Mesmtp,		P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP,
E=\r\n, L=990,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Msmtp8,		P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP,
E=\r\n, L=990,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Mdsmtp,		P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP,
E=\r\n, L=990,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Mrelay,		P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP,
E=\r\n, L=2040,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Should be there the entries from /sendmail/cf/mailer/cyrusv2.m4? If
yes, why the entries are not there?
For testing reasons I changed the mailers (procmail, uucp, fax etc.) in
the sendmail.mc and compiled it. The above entries did never change. In
the attached maillog I also see never cyrusv2 as mailer:
m-mta[702]: k0TEBtog000702: --- 220 acsvfbsd02.acutronic.ch ESMTP
Sendmail 8.13.3/8.13.3; Sun, 29 Jan 2006 15:11:55 +0100 (CET)
Jan 29 15:11:55 acsvfbsd02 sm-mta[702]: k0TEBtog000702: <-- XXXX
[192.168.20.250]
Jan 29 15:11:55 acsvfbsd02 sm-mta[702]: k0TEBtog000702: --- 500 5.5.1
Command unrecognized: "XXXX [192.168.20.250]"
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: <-- HELO
[192.168.20.250]
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: --- 250
acsvfbsd02.acutronic.ch Hello [192.168.20.250], pleased to meet you
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: <-- MAIL
FROM:<mar...@acutronic.ch>
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: --- 250 2.1.0
<mar...@acutronic.ch>... Sender ok
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: <-- RCPT
TO:<mar...@acutronic.ch>
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: --- 250 2.1.5
<mar...@acutronic.ch>... Recipient ok
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: <-- DATA
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: --- 354 Enter
mail, end with "." on a line by itself
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702:
from=<mar...@acutronic.ch>, size=603, class=0, nrcpts=1,
msgid=<43DCDB3E.3...@martin.acutronic.ch>, proto=SMTP,
daemon=IPv4, relay=[192.168.20.250]
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtog000702: --- 250 2.0.0
k0TEBtog000702 Message accepted for delivery
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtoh000702: <-- QUIT
Jan 29 15:11:56 acsvfbsd02 sm-mta[702]: k0TEBtoh000702: --- 221 2.0.0
acsvfbsd02.acutronic.ch closing connection
Jan 29 15:11:56 acsvfbsd02 sm-mta[703]: k0TEBtog000702:
to=<mar...@acutronic.ch>, ctladdr=<mar...@acutronic.ch> (1001/0),
delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30861, relay=local,
dsn=2.0.0, stat=Sent
Jan 29 15:11:56 acsvfbsd02 sm-mta[703]: k0TEBtog000702: done;
delay=00:00:00, ntries=1
I also tested /parse  in sendmail -bt with a local address
(mar...@acutronic.ch) and an external address (in...@pc-service.ch). In
the first case sendmail did not use cyrusv2 as I excepted. I see this
strange problem on different machines. Any hints are welcome.
> /parse in...@pc-service.ch
Cracked address = $g
Parsing envelope recipient address
canonify           input: info @ pc-service . ch
Canonify2          input: info < @ pc-service . ch >
Canonify2        returns: info < @ pc-service . ch . >
canonify         returns: info < @ pc-service . ch . >
parse              input: info < @ pc-service . ch . >
Parse0             input: info < @ pc-service . ch . >
Parse0           returns: info < @ pc-service . ch . >
ParseLocal         input: info < @ pc-service . ch . >
ParseLocal       returns: info < @ pc-service . ch . >
Parse1             input: info < @ pc-service . ch . >
Mailertable        input: < pc-service . ch > info < @ pc-service . ch
. >
Mailertable        input: pc-service . < ch > info < @ pc-service . ch
. >
Mailertable      returns: info < @ pc-service . ch . >
Mailertable      returns: info < @ pc-service . ch . >
MailerToTriple     input: < > info < @ pc-service . ch . >
MailerToTriple   returns: info < @ pc-service . ch . >
Parse1           returns: $# esmtp $@ pc-service . ch . $: info < @
pc-service . ch . >
parse            returns: $# esmtp $@ pc-service . ch . $: info < @
pc-service . ch . >
2                  input: info < @ pc-service . ch . >
2                returns: info < @ pc-service . ch . >
EnvToSMTP          input: info < @ pc-service . ch . >
PseudoToReal       input: info < @ pc-service . ch . >
PseudoToReal     returns: info < @ pc-service . ch . >
MasqSMTP           input: info < @ pc-service . ch . >
MasqSMTP         returns: info < @ pc-service . ch . >
EnvToSMTP        returns: info < @ pc-service . ch . >
final              input: info < @ pc-service . ch . >
final            returns: info @ pc-service . ch
mailer esmtp, host pc-service.ch., user in...@pc-service.ch
> /parse mar...@acutronic.ch
Cracked address = $g
Parsing envelope recipient address
canonify           input: martin @ acutronic . ch
Canonify2          input: martin < @ acutronic . ch >
Canonify2        returns: martin < @ acutronic . ch . >
canonify         returns: martin < @ acutronic . ch . >
parse              input: martin < @ acutronic . ch . >
Parse0             input: martin < @ acutronic . ch . >
Parse0           returns: martin < @ acutronic . ch . >
ParseLocal         input: martin < @ acutronic . ch . >
ParseLocal       returns: martin < @ acutronic . ch . >
Parse1             input: martin < @ acutronic . ch . >
Parse1           returns: $# local $: martin
parse            returns: $# local $: martin
2                  input: martin
2                returns: martin
EnvToL             input: martin
EnvToL           returns: martin
final              input: martin
final            returns: martin
mailer local, user martin
Regards,
Martin