Queue Filter
Hi,
I am using a queue filter for prioritization. Scenario is a JDBC-XI-RFC and an EOIO. I have created the sender/receiver ID and created the queue filter for the Outbound EOIO. Ideally it should be directed to the XBTA* queue. When I test my scenario, it still goes to the XBTO* queue. I have the filter and all 21 queues activated.
I have followed the how to guide from SDN. Is there any additional configurations to be activated?
regards
Unni
Hi,
Please check this link out for your help.
http://help.sap.com/saphelp_nw04/helpdata/en/04/827440c36ed562e10000000a155106/frameset.htm
Thanks,
Arijit Guha
Similar Messages
-
CIF : RSTRFCQDS RSTRFCQD DELETE UNWANTED QUEUES - FILTER
Hi,
We would like to delete some CIF queues in error status in our system.
the report mentionned in the note Note 763255 - Deleting a TID or a queue, work fine.
but it has limitation, we want to filter according the error message, meaning that depending on it, the queues should be delete or not.
Does it need to change the stanard report(we did not find this option unfortunately), and customize this standard program or is there a way to do it?
Thanks
Best regards
John -
Hi Gurus,
I have a JDBC-XI-RFC scenario (EOIO), where in I had to use Enhanced receiver determination to split the calls to RFC's (Regular Vs Emergency). Emergency call was directed using the filter queue to change the priority. We have tested in many env (d,q, pre prod) & now when I moved to Prod I get a strange error. When it first come to the integration engine & if it requires a split it fails showing a mapping error. But if I re-trigger it flow succesfully. Please fing the log from "moni" below(1) & a sussesful log (2).
Please see the below bolded log which I am getting confused
In case of error I get
<SAP:Interface namespace="http://enbridge.com/envision/envision2/jdbc">MI_TBL_WMS_SOURCE_STAGING_SDW_EGD</SAP:Interface>
Else I get
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION</SAP:Interface>
**(1)**
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!-- Request Message Mapping
-->
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30">- <SOAP:Header>
<SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:mustUnderstand="1" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
<SAP:MessageClass>ApplicationMessage</SAP:MessageClass>
<SAP:ProcessingMode>asynchronous</SAP:ProcessingMode>
<SAP:MessageId>4A6DF427-B0EE-7444-E100-00000AAA0C0C</SAP:MessageId>
<SAP:TimeSent>2009-07-28T13:37:05Z</SAP:TimeSent>
<SAP:Sender>
<SAP:Service>CIS_PROD_STORMS</SAP:Service>
<SAP:Interface namespace="http://enbridge.com/envision/envision2/jdbc">MI_TBL_WMS_SOURCE_STAGING_SDW_EGD</SAP:Interface> *
</SAP:Sender>
<SAP:Receiver>
<SAP:Party agency="http://sap.com/xi/XI" scheme="XIParty" />
<SAP:Service>BS_ENVISION_SAP_EMERG</SAP:Service>
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>
<SAP:Mapping notRequired="M">
<SAP:ObjectId>RNPgv18MOBmjhpr+oO1mNw==</SAP:ObjectId>
<SAP:SWCV>oZGAQNmpEdym2dnSCqoHjQ==</SAP:SWCV>
<SAP:SP>-1</SAP:SP>
</SAP:Mapping>
</SAP:Receiver>
<SAP:Interface namespace="http://enbridge.com/envision/envision2/jdbc">MI_TBL_WMS_SOURCE_STAGING_SDW_EGD</SAP:Interface>
</SAP:Main>
<SAP:ReliableMessaging xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:QualityOfService>ExactlyOnceInOrder</SAP:QualityOfService>
<SAP:QueueId>XI_ENV_SERIALIZE</SAP:QueueId>
</SAP:ReliableMessaging>
<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>Application</SAP:Category>
<SAP:Code area="MAPPING">EXCEPTION_DURING_EXECUTE</SAP:Code>
<SAP:P1>com/sap/xi/tf/_MM_ENVISION_WO_TO_SAP_NOTIF_EMERG_</SAP:P1>
<SAP:P2>com.sap.aii.utilxi.misc.api.BaseRuntimeException</SAP:P2>
<SAP:P3>Fatal Error: com.sap.engine.lib.xml.parser.Parser~</SAP:P3>
(2)
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!-- Response
-->
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30">
<SOAP:Header>
<SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:mustUnderstand="1" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
<SAP:MessageClass>ApplicationMessage</SAP:MessageClass>
<SAP:ProcessingMode>asynchronous</SAP:ProcessingMode>
<SAP:MessageId>4A6DDA42-B138-7443-E100-00000AAA0C0C</SAP:MessageId>
<SAP:TimeSent>2009-07-27T22:01:00Z</SAP:TimeSent>
<SAP:Sender>
<SAP:Service>CIS_PROD_STORMS</SAP:Service>
<SAP:Interface namespace="http://enbridge.com/envision/envision2/jdbc">MI_TBL_WMS_SOURCE_STAGING_SDW_EGD</SAP:Interface>
</SAP:Sender>
<SAP:Receiver>
<SAP:Party agency="http://sap.com/xi/XI" scheme="XIParty" />
<SAP:Service>BS_ENVISION_SAP_REGULAR</SAP:Service>
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION</SAP:Interface>
<SAP:Mapping notRequired="M">
<SAP:ObjectId>oPLLbgxJOWimAK6rdZb/MA==</SAP:ObjectId>
<SAP:SWCV>oZGAQNmpEdym2dnSCqoHjQ==</SAP:SWCV>
<SAP:SP>-1</SAP:SP>
</SAP:Mapping>
</SAP:Receiver>
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION</SAP:Interface> *
</SAP:Main>
<SAP:ReliableMessaging xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:QualityOfService>ExactlyOnceInOrder</SAP:QualityOfService>
<SAP:QueueId>XI_ENV_SERIALIZE</SAP:QueueId>
</SAP:ReliableMessaging>
Regards
UKHi,
Sorry, My text help was not working due to some IE setting & I can understand the message got cluttered.
Anyways let me repost the actual thread,
I have a JDBC-XI-RFC scenario which requires an Enhanced receiver determination and requires calling two different RFC programs(emergency, regular) based on that. I use a queue filter to direct to XBQA* for emergency. As I indicated, it seems working fine with d,q,preprod. When I move it to prod, it show me some maping issue. However when I retrigger the same from my moni, they execute succesfully. Please see the log below for a message that goes error & the log when it is succesful (retrigger). Let me know if you need more details.
When there is error Please see the last tag
MI_TBL_WMS_SOURCE_STAGING_SDW_EGD is the sender
<SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:mustUnderstand="1" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
<SAP:MessageClass>ApplicationMessage</SAP:MessageClass>
<SAP:ProcessingMode>asynchronous</SAP:ProcessingMode>
<SAP:MessageId>4A6DF427-B0EE-7444-E100-00000AAA0C0C</SAP:MessageId>
<SAP:TimeSent>2009-07-28T13:37:05Z</SAP:TimeSent>
<SAP:Sender>
<SAP:Service>CIS_PROD_STORMS</SAP:Service>
<SAP:Interface namespace="http://enbridge.com/envision/envision2/jdbc">MI_TBL_WMS_SOURCE_STAGING_SDW_EGD</SAP:Interface>
</SAP:Sender>
<SAP:Receiver>
<SAP:Party agency="http://sap.com/xi/XI" scheme="XIParty" />
<SAP:Service>BS_ENVISION_SAP_EMERG</SAP:Service>
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>
<SAP:Mapping notRequired="M">
<SAP:ObjectId>RNPgv18MOBmjhpr+oO1mNw==</SAP:ObjectId>
<SAP:SWCV>oZGAQNmpEdym2dnSCqoHjQ==</SAP:SWCV>
<SAP:SP>-1</SAP:SP>
</SAP:Mapping>
</SAP:Receiver>
*<SAP:Interface namespace="http://enbridge.com/envision/envision2/jdbc">MI_TBL_WMS_SOURCE_STAGING_SDW_EGD</SAP:Interface>
</SAP:Main>*
Blelow is when its succesful
<SAP:Interface namespace="urn:sap
-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>.
Regards
Unni
Edited by: Unni Krishnan on Jul 28, 2009 5:06 PM -
Hallo, I have an application which implements asynch communication between the web and business layer using JMS.
On a page a user can upload files, which are processed by the backend. For large files this can be a long running process, thats why we use JMS to send the file asynchronously and use JMS to update progress information on the page.
The application works fine on JBoss 6 with HornetMQ.
After porting to Weblogic I see consistently a strange phenomenon. The update messages from the processing backend logic are send as expected. But the receiver does not receive one message after another but receives all the messsages almost at once after only the producer has sent the last message.
For me this is totally unexpected behavior and of course our progress bar on the page does not work properly, but merely jumps from 0 to 100% after the data has been processed.
It looks like the consumer waits until the producer has finished its transaction. But how can this be possibly? I have learned that transaction never span producer - messagesystem - consumer.
Example Code:
Producer:
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import com.sun.tools.ws.wsdl.document.jaxws.Exception;
import dsde.core.aspects.DsdeException;
import dsde.core.aspects.ExceptionHandler;
import dsde.core.entity.Data;
@Stateless
@Interceptors(ExceptionHandler.class)
public class ParserBean implements Parser {
private Logger log = Logger.getLogger(this.getClass());
@EJB
private DataDAO dataDAO;
//Weblogic
@Resource(mappedName="jms.BackQueue")
//Jboss
//@Resource(mappedName="queue/dsdeBackQueue")
private Destination backQueue;
//Weblogic
@Resource(mappedName="jms.dsdeConnectionFactory")
//JBoss
//@Resource(mappedName="XAConnectionFactory")
private ConnectionFactory connectionFactory;
private Connection connection;
@Override
public void parse(String text, String description, String sessionId) throws DsdeException{
double percentDone = 0;
double j = 0.0;
//Simuliere was langdauerndes, schwieriges
for (int i=0; i < text.length(); i++) {
j = i;
percentDone = j / text.length() * 100;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
log.error(e);
if (i % 2 == 0) {
//periodisch das Frontend mit dem Fortschritt updaten
sendFeedback((int)percentDone, sessionId);
//Zum Schluss noch senden dass wir fertig sind
//Sonst wird der Send Button nicht wieder aktiv
percentDone=100;
sendFeedback((int)percentDone, sessionId);
//Jetzt wird noch richtig geparsed :-)
String[] words = text.split(" ");
//Entity konstruieren
Data data = new Data(description, words);
//Das Ergebnis in die Datenbank schreiben
dataDAO.saveData(data);
private void sendFeedback(int percentDone, String sessionId) {
Session session = null;
try {
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(backQueue);
producer.setTimeToLive(50000);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
TextMessage message = session.createTextMessage();
message.setJMSCorrelationID(sessionId);
message.setText("" + percentDone);
producer.send(message);
log.info("ParserBean has sent " + percentDone);
} catch (JMSException e) {
log.error(e);
} finally {
if (session != null) {
try {
session.close();
} catch (JMSException e) {
log.error(e);
@PostConstruct
public void init(){
try {
connection = connectionFactory.createConnection();
} catch (JMSException e) {
log.error(e);
@PreDestroy
public void close() {
try {
connection.close();
} catch (JMSException e) {
log.error(e);
}Consumer:
import javax.annotation.ManagedBean;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
@ManagedBean
@SessionScoped
public class FeedbackReceiverBean implements MessageListener {
private Logger log = Logger.getLogger(this.getClass());
//jndi names of managed objects
private String connectionFactoryName;
private String queueName;
private Connection connection;
private Session session;
private int percent;
private boolean disabled;
public boolean isDisabled() {
return disabled;
public void setDisabled(boolean disabled) {
this.disabled = disabled;
public int getPercent() {
return percent;
public void setPercent(int percent) {
this.percent = percent;
public void setConnectionFactoryName(String connectionFactoryName) {
this.connectionFactoryName = connectionFactoryName;
public void setQueueName(String queueName) {
this.queueName = queueName;
@PostConstruct
public void init() throws NamingException, JMSException {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession httpSession = (HttpSession) facesContext.getExternalContext().getSession(false);
String sessionId = httpSession.getId();
Context context = new InitialContext();
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup(this.connectionFactoryName);
Queue queue = (Queue) context.lookup(this.queueName);
this.connection = connectionFactory.createConnection();
this.session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
String filter = "JMSCorrelationID = '" + sessionId + "'";
MessageConsumer consumer = session.createConsumer(queue, filter);
consumer.setMessageListener(this);
connection.start();
@PreDestroy
public void close() throws JMSException {
this.session.close();
this.connection.close();
@Override
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
try {
this.percent = Integer.parseInt(textMessage.getText());
if (percent >= 100) {
this.disabled = false;
log.info("Prozent " + percent);
} catch (JMSException e) {
log.error(e);
else {
log.error(message.toString() + " is no TextMessage");
public void disable() {
this.disabled = true;
}Configuration:
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
<connection-factory name="dsdeConnectionFcatory">
<default-targeting-enabled>true</default-targeting-enabled>
<jndi-name>jms/dsdeConnectionFactory</jndi-name>
<default-delivery-params>
<default-delivery-mode>Persistent</default-delivery-mode>
<default-time-to-deliver>0</default-time-to-deliver>
<default-time-to-live>100</default-time-to-live>
<default-priority>4</default-priority>
<default-redelivery-delay>0</default-redelivery-delay>
<send-timeout>10</send-timeout>
<default-compression-threshold>2147483647</default-compression-threshold>
</default-delivery-params>
<client-params>
<client-id-policy>Restricted</client-id-policy>
<subscription-sharing-policy>Exclusive</subscription-sharing-policy>
<messages-maximum>10</messages-maximum>
</client-params>
<transaction-params>
<xa-connection-factory-enabled>true</xa-connection-factory-enabled>
</transaction-params>
<security-params>
<attach-jmsx-user-id>false</attach-jmsx-user-id>
</security-params>
</connection-factory>
<queue name="dsdeQueue">
<sub-deployment-name>dsdeQueue</sub-deployment-name>
<jndi-name>jms/dsdeQueue</jndi-name>
</queue>
<queue name="dsdeFeedbackQueue">
<sub-deployment-name>dsdeFeedbackQueue</sub-deployment-name>
<jndi-name>jms/dsdeFeedbackQueue</jndi-name>
</queue>
<queue name="dsdeBackQueue">
<sub-deployment-name>dsdeBackQueue</sub-deployment-name>
<jndi-name>jms/BackQueue</jndi-name>
</queue>
</weblogic-jms>Any help would be greatly appreciated.
Thanks,
HansThanks for posting your analysis!
I think your solution is probably best.
FYI: Your JMS session was never a "transacted" session. It's definitely confusing, but the term "transacted session" has a special meaning in JMS, it actually refers to a session that is not XA/JTA aware and instead maintains an internal local transaction that's scoped only to the current JMS session's operations. A transacted session is created by passing "true" to the first parameter of createSession, and such a session's local transaction is committed by calling session.commit() (which starts a new transaction). To further add to the confusion, I think that JEE servers are actually obligated to ignore requests to set the transacted flag to true -- WebLogic does this trick by secretly wrapping access to the JMS API when applications lookup JMS connection factories via a resource reference.
Regards,
Tom -
Problem with Enhanced Receiver Deterrmination
Hi,
I am facing an issue with the Enhanced Receiver Deterrmination (ERD) at runtime for an EOIO scenario. When a message gets split for the defferent service it fails complaining about mapping. If I retrigger it gets delivered.
However if I provide a queue filter this failure does not occur even if logically that queue filter definition does not make any sense to the scenario. for eg: The filter is maintained for a different scenario say A, but scenario B which has ERD will work. I am well confused, shoot your questions pls. Please help in case you have faced similar issue. We are on 07s SP17.
regards
UnniHi Venkat,
You are correct, I use extended Receiver determination. As I have mentioned earlier, the scenario works well if I specify the queue filter, so all related objects exists.
Basically the split message with out a queue filter is poinitng back to the source message. But if I re-trigger from moni it goes well. With a queue filter, it works without a cause.
See the sample message for error
- <SAP:Receiver>
<SAP:Party agency="http://sap.com/xi/XI" scheme="XIParty" />
<SAP:Service>BS_ENVISION_SAP_EMERG</SAP:Service>
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>
- <SAP:Mapping notRequired="M">
<SAP:ObjectId>oPLLbgxJOWimAK6rdZb/MA==</SAP:ObjectId>
<SAP:SWCV>oZGAQNmpEdym2dnSCqoHjQ==</SAP:SWCV>
<SAP:SP>-1</SAP:SP>
</SAP:Mapping>
</SAP:Receiver>
*<SAP:Interface namespace="http://enbridge.com/envision/envision2/jdbc">MI_TBL_WMS_SOURCE_STAGING_SDW_EGD</SAP:Interface> *
</SAP:Main>
*The actual should be *
- <SAP:Receiver>
<SAP:Party agency="http://sap.com/xi/XI" scheme="XIParty" />
<SAP:Service>BS_ENVISION_SAP_EMERG</SAP:Service>
<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>
- <SAP:Mapping notRequired="M">
<SAP:ObjectId>RNPgv18MOBmjhpr+oO1mNw==</SAP:ObjectId>
<SAP:SWCV>oZGAQNmpEdym2dnSCqoHjQ==</SAP:SWCV>
<SAP:SP>-1</SAP:SP>
</SAP:Mapping>
</SAP:Receiver>
*<SAP:Interface namespace="urn:sap-com:document:sap:rfc:functions">ZWM_INBOUND_NOTIFICATION_EMERG</SAP:Interface>*
</SAP:Main> -
Filter for queue prioritization ...
Hi guys,
I have a question relating to filters for queue prioritization. I have defined filter for large messages (i.e. messages larger than 2048kB should go into XBTL queue). Is it possible to define another one that would say:
"All messages from Sender Name XXXXX larger than 1024kB should be passed into XBTL queue" ?
I know how to create such filters for other queues but XBTL queue is special case.
Do you know how to do it?
Thanks in advance!
Regards
ZbynekHi,
Please find the link for "How To prioritize XI messages in queues" below.
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/59e837d3-0201-0010-c096-dc1869733413.reward me if useful. Let me know if ur issue not resolved.
Thanks,
Ramesh -
Payload level filter JMS Adapter with Queue - not filtering
Hi ,
I have created AQ Queue in my Database, Using JMS Adapter i am able consume and produce the messages. I want a filter condition, which is not happening.
The scenario is i have a field ImportInd in my XSD and i need to pick the message with ImportInd = 1, otherwise the message should lie on the queue.
Please help me in this,
Thanks,
PadminiTrying to give you the counterparts I have in my working example.
In my case the queue is on a separate machine, and the BPEL is deployed on a separate machine. Cross-domain security config needs to be done for these machines to be able to talk.
In weblogic console: where BPEL is running.
under deployment jmsadapter -> Outbound Connections -> jndi name is jms/PRISMQueue -> ConnectionFactoryLocation Property is jms/SoaCF
where queue is configured.
Under JMS Module Connection Factory Name is SoaConnectionFactory which JNDI name is jms/SoaCF
Under JMS Module Queue Name SOAPostActivityStatusQueue which JNDI name is jms.SOAPostActivityStatusQueue
Services>Messaging>JMSModules>MyModule>SOAPostActivityStatusQueue>
JNDI name - jms.SOAPostActivityStatusQueue
Adapter in BPEL/Composite-
Destination - jms.SOAPostActivityStatusQueue
JNDI - jms/PRISMQueue
JCA:
<adapter-config name="PostResponseFromPCService" adapter="JMS Adapter" wsdlLocation="PostResponseFromPCService.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
<connection-factory location="jms/PRISMQueue" UIJmsProvider="WLSJMS" UIConnectionName="tacoma"/>
<endpoint-activation portType="Consume_Message_ptt" operation="Consume_Message">
<activation-spec className="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec">
<property name="PayloadType" value="TextMessage"/>
<property name="UseMessageListener" value="false"/>
<property name="DestinationName" value="jms.SOAPostActivityStatusQueue"/>
</activation-spec>
</endpoint-activation>
</adapter-config>
HTH.
Thanks! -
Hi, i'm trying to create a new filter for an Inbound Queue using as reference the document <b>HowTo_prioritizeXImessages.pdf</b>.
As I follow the document point by point, and after created a new Sender/ReceiverID for my Service (Epiphany) and choose as Message Category - Request the wild card (*) both for Interface Name/Interface Namespace, next I add a new filter for the IS Inbound Exactly Once for my SenderID created before.
Using the functionallity Enter Test Message and after enter the value in the required fields the result turns me an error message as follows : <i><b>No filter found for your test message</b></i>.
Can anyone help me regarding this question ??
Thanks
JMatosHi, José,
when you configure your sender and receiver id, enter your receiver interface and namespace into the message category instead of leaving it empty.
Regards
Cornelius -
I have a Epson Workforce 600 all-in-one printer and it will STILL not print anything after the Mountain Lion upgrade. I have downloaded the latest drivers from Apple's site, tried to print thru TextEdit, it connects via Verizon Wireless 4G hotspot Wi-Fi network, printer is getting signal, macbook picks up nearby printer and installs and configures it, but when looking in Print and Scan, it shows printer is "Idle". Then when you try to get computer to communicate with printer via configuration utility, it says "communication error." What else can I do??
OS X Mountain Lion: Reset the printing system
-
I've been following (roughly) the simple virus scanner interface that SUN provides, and adapted it into a slightly heavier weight filter that interfaces with libclamav. At first both were compiled using GCC, and I thought due to some of the weird problems I had when debugging flags were inserted, maybe Sun Studio would give better results. It hasn't, and I'm at a bit of a loss as to what to do next.
The symptom is that parts of the message just dissapear, and I see the old mime boundaries within the message body, so it seems like there's some pointer indicating where the message starts that's being corrupted by something in my code.
Interestingly, if I stop processing the message while still inside the headers, there is no problem, but that's not a very effective virus scanner if it can only look at the content type and filename of the part now is it?
This happens regardless of whether I use GCC or CC, and I'm using 0.88.1 of clamav. The output message is shown last. It should be fairly obvious what's wrong with it.
Here's my code, perhaps someone can tell me what I'm doing wrong.
** WARNING ** This IS NOT polished code, so please don't expect it to be perfect. It's clean, but includes absolute pathnames, and some other nauties that should be removed before anyone even thinks of reusing this. Once it actually works, I'll do the nessisary code cleanup, and release this to the community to do whatever anyone wants with.
Makefile
SERVER_ROOT=/opt/SUNWmsgsr
INSTALL_LOCATION=/var/opt/SUNWmsgsr/site-programs/
INCLUDE=-I${SERVER_ROOT}/include
LIBPATH=-L${SERVER_ROOT}/lib
CLAMLIBS=`/usr/local/bin/clamav-config --libs` -lclamav
CLAMFLAGS=`/usr/local/bin/clamav-config --cflags`
LIBS=-lmtasdk ${CLAMLIBS}
FLAGS=${CLAMFLAGS}
all:
cc ${FLAGS} -o msgsr_clamav msgsr_clamav.c \
${INCLUDE} ${LIBPATH} ${LIBS}
install:
cp msgsr_clamav ${INSTALL_LOCATION}
cp msgsr_clamav.cnf ${INSTALL_LOCATION}************************************************
Expansions
CLAMLIBS=-L/usr/local/lib -lz -lbz2 -lpthread -lclamav
CLAMFLAGS=-I/usr/local/include -xO4************************************************
msgsr_clamav.c
* msgsr_clamav
* Interface the Sun Java System Message Server with LibClamAV
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <pthread.h>
#include "clamav.h" // LibClamAV Header
#include "mtasdk.h"
* A structure to store channel options
typedef struct {
/* Produce debug output? */
int debug;
// Maximum size (in bytes) attachment to scan
int scan_maxsize;
// Scan recursion level
int scan_recursion_level;
// Max files
int scan_maxfiles;
// Path to ClamAV Virus Database
char db_dir[BIGALFA_SIZE+3];
// Used Internally by ClamAV. Stored here for ease of access
struct cl_node *root;
unsigned int signo;
struct cl_stat dbstat;
pthread_mutex_t reload_mutex;
// MIME types to ignore
char ignore_mime_types[BIGALFA_SIZE+3];
// Types of files to ignore
char ignore_file_types[BIGALFA_SIZE+3];
/* Unwanted MIME content types (ALWAYS stripped, never scanned) */
char bad_mime_types[BIGALFA_SIZE+3];
/* Unwanted file types (ALWAYS stripped, never scanned)*/
char bad_file_types[BIGALFA_SIZE+3];
/* Length of bmt string */
size_t bmt_len;
/* Length of bft string */
size_t bft_len;
} our_options_t;
// A structure passed per message to contain message specific data, including open files, etc.
typedef struct {
// The filename of the temp file in use so it can be unlinked when we're done with it.
char temp_file_name[BIGALFA_SIZE * 2 + 10];
// The file * to the temp file in use, so we don't have to reopen it across calls to decode_inspect
FILE *temp_file;
// A pointer to the single instance of our_options_t that is shared across all threads
our_options_t * options;
} msg_temp_data_t;
* Forward declarations
static void error_exit(int ires, const char *msg);
static void error_report(our_options_t *options, int ires, const char *func);
static void error_reports(our_options_t *options, const char* errStr, const char *func);
static int is_bad_mime_type(our_options_t *options, mta_decode_t *dctx, char *buf, size_t maxbuflen);
static int is_bad_file_type(our_options_t *options, mta_opt_t *params, const char *param_name, char *buf, size_t maxbuflen);
static int load_options(our_options_t *options);
static mta_dq_process_message_t process_message;
static mta_decode_read_t decode_read;
static mta_decode_inspect_t decode_inspect;
* main() -- Initialize the MTA SDK, load our options, and then
* start the message processing loop.
int main()
int ires,ret;
char error_msg[BIGALFA_SIZE+3];
our_options_t options;
* Initialize the MTA SDK
* See explanatory comment 1
if ((ires = mtaInit(0)))
error_exit(ires, "Unable to initialize the MTA SDK");
* Load our channel options
* See explanatory comment 2
if ((ires = load_options(&options)))
error_exit(ires, "Unable to load our channel options");
* Initialize the ClamAV Virus Engine and Database
// Preconditions to initializing the ClamAV database
options.root=NULL; options.signo=0;
// Load the virus database
mtaLog("cl_loaddbdir() loading database from %s",options.db_dir);
if ((ret = cl_loaddbdir(options.db_dir, &options.root, &options.signo)))
sprintf(error_msg,"cl_loaddbdir() error: %s", cl_strerror(ret));
error_exit(MTA_NO,error_msg);
mtaLog("cl_loaddbdir() loaded %d virus definitions",options.signo);
// Internalize the virus database structure
mtaLog("cl_build() initializing database");
if((ret = cl_build(options.root)))
sprintf(error_msg,"cl_build() error: %s", cl_strerror(ret));
error_exit(MTA_NO,error_msg);
// Keep track of database updates
memset(&options.dbstat, 0, sizeof(struct cl_stat));
cl_statinidir(options.db_dir, &options.dbstat);
// Initialize our reload mutex
if (ret = pthread_mutex_init(&options.reload_mutex,NULL))
sprintf(error_msg,"pthread_mutex_init() error: %d", ret);
error_exit(MTA_NO,error_msg);
* Now process the queued messages. Be sure to indicate a
* thread stack size sufficient to accomodate message
* enqueue processing.
* See explanatory comment 3
if ((ires = mtaDequeueStart((void *)&options,
process_message, NULL, 0)))
error_exit(ires, "Error during dequeue processing");
* All done
cl_free(options.root);
mtaDone();
return(0);
*Reloads the virus database and re-initializes the in memory structure
* Loads a new virus database, then if all succeeds, it
* swaps the new database with the old one. It's assumed
* clamav releases the database gracefully, but another mutex
* may be required if this is not the case.
static int reload_database(our_options_t *options)
struct cl_node *newroot = NULL,*oldroot;
char error_msg[BIGALFA_SIZE+3];
int ret;
unsigned int signo=0;
if (pthread_mutex_trylock(&options->reload_mutex)) { // Only one reload at a time thank you.
if(cl_statchkdir(&options->dbstat) == 1) { // Make sure we actually need an update
mtaLog("reload_database() Virus database is stale... reloading");
mtaLog("cl_loaddbdir() reloading database from %s",options->db_dir);
// Load the new virus database
if ((ret = cl_loaddbdir(options->db_dir, &newroot, &signo)))
mtaLog("cl_loaddbdir() error: %s", cl_strerror(ret));
return (-1);
mtaLog("cl_loaddbdir() loaded %d virus definitions",options->signo);
// Internalize the virus database structure
mtaLog("cl_build() re-initializing database");
if((ret = cl_build(newroot)))
mtaLog("cl_build() error: %s", cl_strerror(ret));
mtaLog("reload_database() Database reload aborted");
cl_free(newroot);
return (-2);
// Save a pointer to the old root
oldroot = options->root;
// Swap in the new root and signo
options->root = newroot;
options->signo = signo;
// Release the old root
cl_free(oldroot);
mtaLog("database_reload() Successfully loaded new virus database");
// Keep track of database updates
cl_statfree(&options->dbstat);
cl_statinidir(options->db_dir, &options->dbstat);
pthread_mutex_unlock(&options->reload_mutex);
* process_message() -- This routine is called by
* mtaDequeueStart() to process each queued
* message. We don稚 make use of ctx2, but
* ctx1 is a pointer to our channel options.
* See explanatory comment 4
static int process_message(void **ctx2, void *ctx1, mta_dq_t *dq, const char *env_from, size_t env_from_len)
const char *adr;
int disp, ires;
size_t len;
mta_nq_t *nq;
msg_temp_data_t msg_data;
* Initializations
nq = NULL;
msg_data.options = (our_options_t *)ctx1;
msg_data.temp_file = NULL;
* Check the virus database to make sure it isn't stale
* If it it's not currently reloading, and is stale, reload it.
//if(cl_statchkdir(&(msg_data.options->dbstat)) == 1)
// reload_database(msg_data.options);
* A little macro to do error checking on mta*() calls
#define CHECK(f,x) \
if ((ires = x)) { error_report(msg_data.options, ires, f); goto \
done_bad; }
* Start a message enqueue. Use the dequeue context to copy
* envelope flags fromt the current message to this new
* message being enqueued.
* See explanatory comment 5
CHECK("mtaEnqueueStart", mtaEnqueueStart(&nq, env_from, env_from_len, MTA_DQ_CONTEXT, dq, 0));
* Process the envelope recipient list
* See explanatory comment 6
while (!(ires = mtaDequeueRecipientNext(dq, &adr, &len, 0)))
* Add this envelope recipient address to the message
* being enqueued. Use the dequeue context to copy
* envelope flags for this recipient from the current
* message to the new message.
ires = mtaEnqueueTo(nq, adr, len, MTA_DQ_CONTEXT,
dq, MTA_ENV_TO, 0);
/* See explanatory comment 7 */
disp = (ires) ? MTA_DISP_DEFERRED : MTA_DISP_RELAYED;
CHECK("mtaDequeueRecipientDisposition", mtaDequeueRecipientDisposition(dq, adr, len,disp, 0));
* A normal exit from the loop occurs when
* mtaDequeueRecipientNext() returns an MTA_EOF status.
* Any other status signifies an error.
if (ires != MTA_EOF)
error_report(msg_data.options, ires, "mtaDequeueRecipientNext");
goto done_bad;
* Begin the MIME decode of the message
* See explanatory comment 8
CHECK("mtaDecodeMessage",
mtaDecodeMessage(
/* Private context is our message data structure */
(void *)&msg_data,
/* Input is the message being dequeued */
MTA_DECODE_DQ, (void *)dq,
/* Output is the message being enqueued */
MTA_DECODE_NQ, (void *)nq,
/* Inspection routine */
decode_inspect,
/* Convert non-MIME formats to MIME */
MTA_DECODE_THURMAN,
0));
* Finish the enqueue
* NOTE: IT担 IMPORTANT TO DO THIS before DOING THE
* DEQUEUE. YOU WILL LOSE MAIL IF YOU DO THE DEQUEUE FIRST
* and then THE ENQUEUE FAILS.
* See explanatory text 9
CHECK("mtaEnqueueFinish", mtaEnqueueFinish(nq, 0));
nq = NULL;
* Finish the dequeue
CHECK("mtaDequeueFinish", mtaDequeueMessageFinish(dq, 0));
* All done with this message
return(MTA_OK);
done_bad:
* Abort any ongoing enqueue or dequeue
if (nq)
mtaEnqueueFinish(nq, MTA_ABORT, 0);
if (dq)
mtaDequeueMessageFinish(dq, MTA_ABORT, 0);
* And return our error status
return(ires);
#undef CHECK
* decode_inspect() -- This is the routine that inspects each
* message part, deciding whether to accept
* or reject it.
* See explanatory comment 10
static int decode_inspect(void *ctx, mta_decode_t *dctx, int data_type,const char *data, size_t data_len)
char buf[BIGALFA_SIZE * 2 + 10];
const char *virname;
int i;
static unsigned int part_c = 1;
msg_temp_data_t *msg_data = (msg_temp_data_t *)ctx;
strncpy(buf,data,data_len);
buf[data_len] = 0;
mtaLog("decode_inspect() (%d,%ud): %s",data_type,dctx,buf);
switch (data_type)
case MTA_DATA_HEADER:
* See if the part has:
* 1. A bad MIME content-type,
* 2. A bad file name extension in the (deprecated)
* NAME= content-type parameter, or
* 3. A bad file name extension in the
* FILENAME= content-disposition parameter.
i = 0;
if ((i = is_bad_mime_type((void *)msg_data->options, dctx, buf, sizeof(buf))) ||
is_bad_file_type((void *)msg_data->options,mtaDecodeMessageInfoParams(dctx,MTA_DECODE_CTYPE_PARAMS, NULL),"NAME", buf, sizeof(buf)) ||
is_bad_file_type((void *)msg_data->options,mtaDecodeMessageInfoParams(dctx,MTA_DECODE_CDISP_PARAMS, NULL),"FILENAME", buf, sizeof(buf)))
char msg[BIGALFA_SIZE*4 + 10];
* Replace this part with a text message indicating
* that the part痴 content has been deleted.
* See explanatory comment 11
if (i)
i = sprintf(msg,
"The content of this message part has been removed.\n"
"It contained a potentially harmful media type of %.*s",
strlen(buf)-2, buf+1);
else
i = sprintf(msg,
"The content of this message part has been removed.\n"
"It contained a potentially harmful file named '%s'", buf);
mtaLog("decode_inspect(): %s",msg);
return(mtaDecodeMessagePartDelete(dctx,
MTA_REASON, msg, i,
MTA_DECODE_CTYPE, "text", 4,
MTA_DECODE_CSUBTYPE, "plain", 5,
MTA_DECODE_CCHARSET, "us-ascii", 8,
MTA_DECODE_CDISP, "inline", 6,
MTA_DECODE_CLANG, "en", 2, 0));
} break; // case MTA_DATA_HEADER:
case MTA_DATA_TEXT:
case MTA_DATA_BINARY:
if (msg_data->temp_file == NULL)
sprintf(msg_data->temp_file_name,"/tmp/%i.tmp",part_c++);
mtaLog("messageDecode(): Opening Temp File %s",msg_data->temp_file_name);
msg_data->temp_file = fopen(msg_data->temp_file_name,"wb");
fwrite(data,data_len,1,msg_data->temp_file);
return(MTA_OK);
break;
case MTA_DATA_NONE:
fflush(msg_data->temp_file);
fclose(msg_data->temp_file);
msg_data->temp_file = NULL;
struct cl_limits limits;
memset(&limits, 0, sizeof(struct cl_limits));
/* maximal number of files in archive */;
limits.maxfiles = 1000;
/* maximal archived file size */
limits.maxfilesize = 10 * 1048576; /* 10 MB */
/* maximal recursion level */
limits.maxreclevel = 5;
/* maximal compression ratio */
limits.maxratio = 200;
/* disable memory limit for bzip2 scanner */
limits.archivememlim = 0;
i = cl_scanfile(msg_data->temp_file_name, &virname, NULL, msg_data->options->root,&limits,CL_SCAN_STDOPT);
unlink (msg_data->temp_file_name);
if(i == CL_VIRUS) {
char msg[BIGALFA_SIZE*4 + 10];
size_t idlen;
i = sprintf(msg,
"The content of this message part has been removed.\n"
"It contained the virus %s in a file named '%s'", virname,buf);
mtaDequeueInfo(dctx,MTA_ENV_ID,&buf,&idlen);
buf[idlen] = '\0';
mtaLog("decode_inspect(): Detected %s virus in part %i of msg ID %s",virname,0,buf);
return(mtaDecodeMessagePartDelete(dctx,
MTA_REASON, msg, i,
MTA_DECODE_CTYPE, "text", 4,
MTA_DECODE_CSUBTYPE, "plain", 5,
MTA_DECODE_CCHARSET, "us-ascii", 8,
MTA_DECODE_CDISP, "inline", 6,
MTA_DECODE_CLANG, "en", 2, 0));
} else {
if(i != CL_CLEAN)
mtaLog("decode_inspect() Error: %s scanning file %s",cl_strerror(i),msg_data->temp_file_name);
else
mtaLog("decode_inspect(): Part in file %s is clean",msg_data->temp_file_name);
//return(mtaDecodeMessagePartCopy(dctx, 0));
return(MTA_OK); break;
return(MTA_OK);
* is_bad_mime_type() -- See if the part痴 media type is in our
* bad MIME content types, for example:
* application/vbscript
* See explanatory comment 13
static int is_bad_mime_type(our_options_t *options,
mta_decode_t *dctx, char *buf,
size_t maxbuflen)
const char *csubtype, *ctype;
size_t i, len1, len2;
char *ptr;
* Sanity checks
if (!options || !options->bmt_len ||
!options->bad_mime_types[0] ||
!dctx)
return(0);
* Get the MIME content type
ctype = mtaDecodeMessageInfoString(dctx, MTA_DECODE_CTYPE,NULL, &len1);
csubtype = mtaDecodeMessageInfoString(dctx,MTA_DECODE_CSUBTYPE,NULL, &len2);
* Build the string: <0x01>type/subtype<0x01><0x00>
ptr = buf;
*ptr++ = (char)0x01;
for (i = 0; i < len1; i++)
*ptr++ = tolower(*ctype++);
*ptr++ = '/';
for (i = 0; i < len2; i++)
*ptr++ = tolower(*csubtype++);
*ptr++ = (char)0x01;
*ptr = '\0';
* Now see if the literal just built occurs in the list of
* bad MIME content types
return((strstr(options->bad_mime_types, buf)) ? -1 : 0);
* is_bad_file_type() -- See if the part has an associated file
* name whose file extension is in our list
* of bad file names, such as .vbs.
* See explanatory comment 14
static int is_bad_file_type(our_options_t *options,
mta_opt_t *params,
const char *param_name, char *buf,
size_t maxbuflen)
const char *ptr1;
char fext[BIGALFA_SIZE+2], *ptr2;
size_t i, len;
* Sanity checks
if (!options || !options->bft_len || !params || !param_name)
return(0);
len = 0;
buf[0] = '\0';
if (mtaOptionString(params, param_name, 0, buf, &len,
maxbuflen - 1) ||
!len || !buf[0])
* No file name parameter specified
return(0);
* A file name parameter was specified. Parse it to
* extract the file extension portion, if any.
ptr1 = strrchr(buf, '.');
if (!ptr1)
* No file extension specified
return(0);
* Now store the string created earlier in fext[]
* Note that we drop the ・・from the extension.
ptr1++; /* Skip over the ・・*/
ptr2 = fext;
*ptr2++ = (char)0x01;
len = len - (ptr1 - buf);
for (i = 0; i < len; i++)
*ptr2++ = tolower(*ptr1++);
*ptr2++ = (char)0x01;
*ptr2++ = '\0';
* Now return -1 if the string occurs in
* options->bad_file_types.
return((strstr(options->bad_file_types, fext)) ? -1 : 0);
* load_options() -- Load our channel options from the channel痴
* option file
* See explanatory comment 15
static int load_options(our_options_t *options)
char buf[BIGALFA_SIZE+1];
size_t buflen, i;
mta_opt_t *channel_opts;
int ires;
const char *ptr0;
char *ptr1;
* Initialize the our private channel option structure
memset(options, 0, sizeof(our_options_t));
* Set internal defaults for important features
options->scan_maxsize = 10 * 1024 * 1024; // 10 MB
options->scan_recursion_level = 10;
options->scan_maxfiles = 200;
strcpy(options->db_dir,cl_retdbdir()); // Default ClamAV Directory
* Access the channel痴 option file
* See explanatory comment 16
channel_opts = NULL;
if ((ires = mtaOptionStart(&channel_opts, "/var/opt/SUNWmsgsr/site-programs/msgsr_clamav.cnf", 0, 0)))
mtaLog("Unable to access our channel option file");
return(ires);
* DEBUG=0|1
options->debug = 0;
mtaOptionInt(channel_opts, "DEBUG", 0, &options->debug);
if (options->debug)
mtaDebug(MTA_DEBUG_SDK, 0);
* BAD_MIME_TYPES=type1/subtype1[,type2/subtype2[,...]]
buf[0] = '\0';
mtaOptionString(channel_opts, "BAD_MIME_TYPES", 0, buf,
&buflen, sizeof(buf));
* Now translate the comma separated list:
* Type1/Subtype1[,Type2/Subtype2[,...]]
* to
*<0x01>type1/subtype1[<0x01>type2/subtype2[<0x01>...]]<0x01>
ptr0 = buf;
ptr1 = options->bad_mime_types;
*ptr1++ = (char)0x01;
for (i = 0; i < buflen; i++)
if (*ptr0 != ',')
*ptr1++ = tolower(*ptr0++);
else
*ptr1++ = (char)0x01;
ptr0++;
*ptr1++ = (char)0x01;
*ptr1 = '\0';
options->bmt_len = ptr1 - options->bad_mime_types;
* BAD_FILE_TYPES=["."]Ext1[,["."]Ext2[,...]]
buf[0] = '\0';
buflen = 0;
mtaOptionString(channel_opts, "BAD_FILE_TYPES", 0, buf,
&buflen, sizeof(buf));
* Now translate the comma separated list:
* ["."]Ext1[,["."]Ext2[,...]]
* to
* <0x01>ext1[<0x01>ext2[<0x01>...]]<0x01>
ptr0 = buf;
ptr1 = options->bad_file_types;
*ptr1++ = (char)0x01;
for (i = 0; i < buflen; i++)
switch(*ptr0)
default : /* copy after translating to lower case */
*ptr1++ = tolower(*ptr0++);
break;
case '.' : /* discard */
break;
case ',' : /* end current type */
*ptr1++ = (char)0x01;
ptr0++;
break;
*ptr1++ = (char)0x01;
*ptr1 = '\0';
options->bft_len = ptr1 - options->bad_file_types;
* Dispose of the mta_opt_t context
* See explanatory comment 17
mtaOptionFinish(channel_opts);
* And return a success
return(MTA_OK);
* error_report() ・Report an error condition when debugging is
* enabled.
static void error_report(our_options_t *options, int ires,
const char *func)
if (options->debug)
mtaLog("%s() returned %d; %s",
(func ? func : "?"), ires, mtaStrError(ires,0));
static void error_reports(our_options_t *options, const char* errStr,
const char *func)
if (options->debug)
mtaLog("%s() reported: %s",
(func ? func : "?"), errStr);
* error_exit() -- Exit with an error status and error message.
static void error_exit(int ires, const char *msg)
mtaLog("%s%s%s", (msg ? msg : ""), (msg ? "; " : ""),
mtaStrError(ires,0));
exit(1);
msgsr_clamav.cnf
DEBUG=1
BAD_MIME_TYPES=application/vbscript
BAD_FILE_TYPES=bat,pif,vb,vbs,chs,exe************************************************
broken message
Return-path: <[email protected]>
Received: from virusscan-daemon.apple.california.com by apple.california.com
(Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
id <[email protected]> for [email protected]; Thu,
20 Apr 2006 07:30:13 -0700 (PDT)
Received: from california.com ([209.159.129.16])
by apple.california.com (Sun Java System Messaging Server 6.2-3.04 (built Jul
15 2005)) with ESMTP id <[email protected]> for
[email protected]; Thu, 20 Apr 2006 07:30:05 -0700 (PDT)
Received: from [61.23.221.222] by apple.california.com (mshttpd); Thu,
20 Apr 2006 14:30:05 +0000 (GMT)
Content-return: allowed
Date: Thu, 20 Apr 2006 14:30:05 +0000 (GMT)
From: [email protected]
Subject: Re: testing
In-reply-to: <[email protected]>
To: [email protected]
Message-id: <[email protected]>
MIME-version: 1.0
X-Mailer: Sun Java(tm) System Messenger Express 6.2-3.04 (built Jul 15 2005)
Content-type: multipart/alternative;
boundary="Boundary_(ID_iOVR4MBjhWJn/mh7Ij+BUQ)"
Content-language: en
X-Accept-Language: en
Priority: normal
References: <[email protected]>
Original-recipient: rfc822;[email protected]
This is a multi-part message in MIME format.
--Boundary_(ID_iOVR4MBjhWJn/mh7Ij+BUQ)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7bit
Content-disposition: inline
Data is missing from here
----ec04832708e231d6e2f
--Boundary_(ID_iOVR4MBjhWJn/mh7Ij+BUQ)
Content-type: text/html; charset=us-ascii
Content-transfer-encoding: quoted-printable
Content-disposition: inline
Data is missing from here
nal Message -----=3Cbr=3EFrom=3A chales=40california=2Ecom=3Cbr=3EDate=3A=
Thursday=2C April 20=2C 2006 11=3A19 pm=3Cbr=3ESubject=3A testing=3Cbr=3E=
To=3A chales=40california=2Ecom=3Cbr=3E=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B=
3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B 5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B=
7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B 9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B=
1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B 3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B=
5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B 7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B=
9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B 1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B=
3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B 5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B=
7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B 9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B=
1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B 3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B=
5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B 7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B=
9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B 1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B=
3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B 5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B=
7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B 9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B=
1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B 3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B=
5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B 7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B=
9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B 1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B=
3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B 5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B=
7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B 9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B=
1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B 3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B=
5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B 7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B=
9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B 1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B=
3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B 5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B=
7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B 9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B=
1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B 3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B=
5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B 7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B=
9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B 1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B=
3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B 5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B=
7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B 9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B=
1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B 3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B=
5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B 7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B=
9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B 1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B=
3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B 5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B=
7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B 9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B=
1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B 3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B=
5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B 7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B=
9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B 1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B=
3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B 5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B=
7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B 9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B=
1=3Cbr=3E=26gt=3B 2=3Cbr=3E=26gt=3B 3=3Cbr=3E=26gt=3B 4=3Cbr=3E=26gt=3B=
5=3Cbr=3E=26gt=3B 6=3Cbr=3E=26gt=3B 7=3Cbr=3E=26gt=3B 8=3Cbr=3E=26gt=3B=
9=3Cbr=3E=26gt=3B 0=3Cbr=3E=26gt=3B =3Cbr=3E=26gt=3B
----ec04832708e231d6e2f
--Boundary_(ID_iOVR4MBjhWJn/mh7Ij+BUQ)
Content-type: text/x-vcard; name=chales.vcf; charset=us-ascii
Content-transfer-encoding: base64
Content-disposition: attachment; filename=chales.vcf
Content-description: Card for <[email protected]>
bA0KdGVsO3dvcms6NTEwLTI4Ny04NDUwDQp1cmw6aHR0cDovL3d3dy5jYWxpZm9ybmlh
LmNvbS8NCm9yZzpDYWxpZm9ybmlhQ29tLCBJbmM7DQp2ZXJzaW9uOjIuMQ0KZW1haWw7
aW50ZXJuZXQ6Y2hhbGVzQGNhbGlmb3JuaWEuY29tDQp0aXRsZTpTeXN0ZW0gQWRtaW5p
c3RyYXRvcg0KZW5kOnZjYXJkDQo=
----ec04832708e231d6e2f--
Boundary_(ID_iOVR4MBjhWJn/mh7Ij+BUQ)Ok, so it's not my code. Using the virus_scanner_simple.c example from SUN, if you change the decode_inspect routine to return MTA_OK for every call (which should technically just let the message pass) it has the same behavior as my program. (Not all that suprising since mine is a derivative of said program)
That said, this now looks like a library issue. I'm using Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005) according to the SMTP prompt, and was wondering if perhaps I should apply:
http://sunsolve.sun.com/search/document.do?assetkey=1-21-118207-42-1&searchclause=6306404
The issue seems to be in the mtaDecodeMessage function, and occurs when the decode_inspect function is allowed to parse the message body, not just the message headers.
The machine is a Sun Ultra 4500 running Solaris 10. Here's the banner:
SunOS cookie 5.10 Generic_118822-23 sun4u sparc SUNW,Ultra-Enterprise
Has anyone else had similar problems using the MTA SDK? Is there anything I'm missing here (besides the above mentioned patch) that might fix this? -
Middleware problem -Outbound queue is stuck in SAP R/3 system with message
Hi Middleware gurus ,
We are stuck with a serious issue . We are trying to download Business partners from SAP R/3 4.6c system to SAP CRM 5.2 system using CRM Middleware
Previously we did a successful Initial download of 2 Business partners from SAP R/3 to CRM . Their BP numbers in CRM are 001 and 002 . The Delta load is working fine for the both the BPs which are already downloaded
Now , the real problem is when we are trying to download a new Business partner . When we set the Filter ( BP no 003 ) in MW adaptor object CUSTOMER_MAIN and start the Initial load again , we see that the Outbound queue is getting stuck with message STOP .
There are two queues generated in SAP R/3 system with names MASS_CRM_CUSTOME and R3AD_CUSTOME . The status for both the queues is STOP and when go for details it mentions sapsuck ..SAPMSSY1 -Message no. SR 053.
Even we checked the txn SMW01, the Bdocs message is "Recived ( Intermediate state) " for Bdoc type BUPA_MAIN.
We really dont as to why the Initial load worked fine with 2 BPs and later when want to do more BP Initial Load the Outbound queue is getting stuck
Also , by unlocking the 2nd queue R3AD_CUSTOME we are able to release it , but the first queue MASS_CRM_CUSTOME* is stuck
Please help us urgently
Regards
Dinesh and Ritvij
Email : [email protected]
Mobile -+91=9704933315Hi Praveen and other Middleware gurus,
We checked on this . Actually the RFC is used for connecting to SAP R/3 system.
We also raised an OSS message on this and found a reply that in transaction CRMM_BUPA_MAP, we can map the required BP . But the SAP support guy recived an error received the error:
An RFC link is not maintained in the Middleware
Message no. CRM_BUPA_MAPPING051
We have set the RFC link , but still the problem continues!!!
Please help further..
Regards
Dinesh and Ritvij -
Cannot print PDF files: "/usr/lib/cups/filter/pdftops failed"
Hi
I have a HP Deskjet D1460 printer (crap, i know ). I'm using hplip 3.11.1 drivers and CUPS 1.4.6hplip 3.11.1.
Today i wanted to print a pdf file, and my printer just silently refused to work, like they always do I did some log-scavenging, and found this rather long one:
E [11/Feb/2011:12:44:36 +0100] [Job 24] Job stopped due to filter errors; please consult the error_log file for details.
D [11/Feb/2011:12:44:36 +0100] [Job 24] The following messages were recorded from 12:44:30 to 12:44:36
D [11/Feb/2011:12:44:36 +0100] [Job 24] Adding start banner page "none".
D [11/Feb/2011:12:44:36 +0100] [Job 24] Queued on "Deskjet_D1400" by "kaszak".
D [11/Feb/2011:12:44:36 +0100] [Job 24] Auto-typing file...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Request file type is application/pdf.
D [11/Feb/2011:12:44:36 +0100] [Job 24] File of type application/pdf queued by "kaszak".
D [11/Feb/2011:12:44:36 +0100] [Job 24] Adding end banner page "none".
D [11/Feb/2011:12:44:36 +0100] [Job 24] job-sheets=none,none
D [11/Feb/2011:12:44:36 +0100] [Job 24] argv[0]="Deskjet_D1400"
D [11/Feb/2011:12:44:36 +0100] [Job 24] argv[1]="24"
D [11/Feb/2011:12:44:36 +0100] [Job 24] argv[2]="kaszak"
D [11/Feb/2011:12:44:36 +0100] [Job 24] argv[3]="przelew.pdf"
D [11/Feb/2011:12:44:36 +0100] [Job 24] argv[4]="1"
D [11/Feb/2011:12:44:36 +0100] [Job 24] argv[5]="finishings=3 number-up=1 page-ranges=1 job-uuid=urn:uuid:82dc9ff4-9df7-3643-7cb5-87d5084f99f5 job-originating-host-name=localhost time-at-creation=1297424670 time-at-processing=1297424670 AP_D_InputSlot="
D [11/Feb/2011:12:44:36 +0100] [Job 24] argv[6]="/var/spool/cups/d00024-001"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[0]="CUPS_CACHEDIR=/var/cache/cups"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[1]="CUPS_DATADIR=/usr/share/cups"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[2]="CUPS_DOCROOT=/usr/share/cups/doc"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[3]="CUPS_FONTPATH=/usr/share/cups/fonts"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[4]="CUPS_REQUESTROOT=/var/spool/cups"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[5]="CUPS_SERVERBIN=/usr/lib/cups"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[6]="CUPS_SERVERROOT=/etc/cups"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[7]="CUPS_STATEDIR=/var/run/cups"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[8]="HOME=/var/spool/cups/tmp"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[9]="PATH=/usr/lib/cups/filter:/usr/bin:/usr/sbin:/bin:/usr/bin"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[10]="SERVER_ADMIN=root@localhost"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[11]="SOFTWARE=CUPS/1.4.6"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[12]="TMPDIR=/var/spool/cups/tmp"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[13]="USER=root"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[14]="CUPS_SERVER=/var/run/cups/cups.sock"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[15]="CUPS_ENCRYPTION=IfRequested"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[16]="IPP_PORT=631"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[17]="CHARSET=utf-8"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[18]="LANG=pl_PL.UTF-8"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[19]="PPD=/etc/cups/ppd/Deskjet_D1400.ppd"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[20]="RIP_MAX_CACHE=8m"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[21]="CONTENT_TYPE=application/pdf"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[22]="DEVICE_URI=hp:/usb/Deskjet_D1400_series?serial=TH7B13311X04Y2"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[23]="PRINTER_INFO="
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[24]="PRINTER_LOCATION="
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[25]="PRINTER=Deskjet_D1400"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[26]="CUPS_FILETYPE=document"
D [11/Feb/2011:12:44:36 +0100] [Job 24] envp[27]="FINAL_CONTENT_TYPE=printer/Deskjet_D1400"
D [11/Feb/2011:12:44:36 +0100] [Job 24] Started filter /usr/lib/cups/filter/pdftops (PID 2793)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Started filter /usr/lib/cups/filter/foomatic-rip-hplip (PID 2794)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Started backend /usr/lib/cups/backend/hp (PID 2795)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Started filter pdftops (PID 2796)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Started filter pstops (PID 2797)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Page = 612x792; 18,36 to 594,783
D [11/Feb/2011:12:44:36 +0100] [Job 24] slow_collate=0, slow_duplex=0, slow_order=0
D [11/Feb/2011:12:44:36 +0100] [Job 24] Before copy_comments - %!PS-Adobe-3.0
D [11/Feb/2011:12:44:36 +0100] [Job 24] %!PS-Adobe-3.0
D [11/Feb/2011:12:44:36 +0100] [Job 24] %%LanguageLevel: 3
D [11/Feb/2011:12:44:36 +0100] [Job 24] %%DocumentSuppliedResources: (atend)
D [11/Feb/2011:12:44:36 +0100] [Job 24] %%DocumentMedia: plain 596 842 0 () ()
D [11/Feb/2011:12:44:36 +0100] [Job 24] %%BoundingBox: 0 0 596 842
D [11/Feb/2011:12:44:36 +0100] [Job 24] %%Pages: 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] %%EndComments
D [11/Feb/2011:12:44:36 +0100] [Job 24] Before copy_prolog - %%BeginDefaults
D [11/Feb/2011:12:44:36 +0100] [Job 24] Before copy_setup - %%BeginSetup
D [11/Feb/2011:12:44:36 +0100] [Job 24] foomatic-rip version $Revision=3.0.2.131$ running...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Parsing PPD file ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option ColorSpace
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option Resolution
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option PageSize
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option Model
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option PrintoutMode
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option Quality
D [11/Feb/2011:12:44:36 +0100] [Job 24] *cupsFilter: "application/vnd.cups-postscript 100 foomatic-rip-hplip"
D [11/Feb/2011:12:44:36 +0100] [Job 24] *cupsFilter: "application/vnd.cups-pdf 0 foomatic-rip-hplip"
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option PageRegion
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option ImageableArea
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option PaperDimension
D [11/Feb/2011:12:44:36 +0100] [Job 24] Added option Font
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] Parameter Summary
D [11/Feb/2011:12:44:36 +0100] [Job 24] -----------------
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] Spooler: cups
D [11/Feb/2011:12:44:36 +0100] [Job 24] Printer: Deskjet_D1400
D [11/Feb/2011:12:44:36 +0100] [Job 24] Shell: /bin/sh
D [11/Feb/2011:12:44:36 +0100] [Job 24] PPD file: /etc/cups/ppd/Deskjet_D1400.ppd
D [11/Feb/2011:12:44:36 +0100] [Job 24] ATTR file:
D [11/Feb/2011:12:44:36 +0100] [Job 24] Printer model: HP Deskjet d1400 Series hpijs, 3.11.1
D [11/Feb/2011:12:44:36 +0100] [Job 24] Job title: przelew.pdf
D [11/Feb/2011:12:44:36 +0100] [Job 24] File(s) to be printed:
D [11/Feb/2011:12:44:36 +0100] [Job 24] <STDIN>
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] GhostScript extra search path ('GS_LIB'): /usr/share/cups/fonts
D [11/Feb/2011:12:44:36 +0100] [Job 24] Pondering option 'finishings=3'
D [11/Feb/2011:12:44:36 +0100] [Job 24] Unknown option finishings=3.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Pondering option 'number-up=1'
D [11/Feb/2011:12:44:36 +0100] [Job 24] Unknown option number-up=1.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Pondering option 'page-ranges=1'
D [11/Feb/2011:12:44:36 +0100] [Job 24] Unknown option page-ranges=1.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Pondering option 'job-uuid=urn:uuid:82dc9ff4-9df7-3643-7cb5-87d5084f99f5'
D [11/Feb/2011:12:44:36 +0100] [Job 24] Unknown option job-uuid=urn:uuid:82dc9ff4-9df7-3643-7cb5-87d5084f99f5.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Pondering option 'job-originating-host-name=localhost'
D [11/Feb/2011:12:44:36 +0100] [Job 24] Unknown option job-originating-host-name=localhost.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Pondering option 'time-at-creation=1297424670'
D [11/Feb/2011:12:44:36 +0100] [Job 24] Unknown option time-at-creation=1297424670.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Pondering option 'time-at-processing=1297424670'
D [11/Feb/2011:12:44:36 +0100] [Job 24] Unknown option time-at-processing=1297424670.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Pondering option 'AP_D_InputSlot='
D [11/Feb/2011:12:44:36 +0100] [Job 24] Unknown option AP_D_InputSlot=.
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] ================================================
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] File: <STDIN>
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] ================================================
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] Reading PostScript input ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] --> This document is DSC-conforming!
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %RBINumCopies: 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] Job claims to be DSC-conforming, but "%%BeginProlog" was missing before first line with another "%%Begin..." comment (is this a TeX/LaTeX/dvips-generated PostScript file?). Assuming start of "Prolog" here.
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] -----------
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%BeginProlog
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%EndProlog
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] -----------
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%BeginSetup
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%BeginFeature: *PageSize Letter
D [11/Feb/2011:12:44:36 +0100] [Job 24] Option: PageSize=Letter --> Setting option
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %% FoomaticRIPOptionSetting: PageSize=Letter
D [11/Feb/2011:12:44:36 +0100] [Job 24] Option: PageSize=Letter --> Setting option
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%BeginFeature: *PrintoutMode Normal
D [11/Feb/2011:12:44:36 +0100] [Job 24] Option: PrintoutMode=Normal --> Setting option
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %% FoomaticRIPOptionSetting: PrintoutMode=Normal
D [11/Feb/2011:12:44:36 +0100] [Job 24] Option: PrintoutMode=Normal --> Setting option
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%BeginFeature: *Quality FromPrintoutMode
D [11/Feb/2011:12:44:36 +0100] [Job 24] Option: Quality=FromPrintoutMode --> Setting option
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %% FoomaticRIPOptionSetting: Quality=@PrintoutMode
D [11/Feb/2011:12:44:36 +0100] [Job 24] Option: Quality=FromPrintoutMode --> Setting option
D [11/Feb/2011:12:44:36 +0100] [Job 24] Before page loop - %%Page: 1 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] Copying page 1...
D [11/Feb/2011:12:44:36 +0100] [Job 24] pagew = 576.0, pagel = 747.0
D [11/Feb/2011:12:44:36 +0100] [Job 24] bboxx = 0, bboxy = 0, bboxw = 612, bboxl = 792
D [11/Feb/2011:12:44:36 +0100] [Job 24] PageLeft = 18.0, PageRight = 594.0
D [11/Feb/2011:12:44:36 +0100] [Job 24] PageTop = 783.0, PageBottom = 36.0
D [11/Feb/2011:12:44:36 +0100] [Job 24] PageWidth = 612.0, PageLength = 792.0
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%EndSetup
D [11/Feb/2011:12:44:36 +0100] [Job 24] Inserting PostScript code for CUPS' page accounting
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] -----------
D [11/Feb/2011:12:44:36 +0100] [Job 24] New page: 1 1
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%BeginPageSetup
D [11/Feb/2011:12:44:36 +0100] [Job 24] Inserting option code into "PageSetup" section.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: %%EndPageSetup
D [11/Feb/2011:12:44:36 +0100] [Job 24] End of page header
D [11/Feb/2011:12:44:36 +0100] [Job 24] Stopping search for page header options
D [11/Feb/2011:12:44:36 +0100] [Job 24] Found: S
D [11/Feb/2011:12:44:36 +0100] [Job 24] --> Output goes directly to the renderer now.
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] Starting renderer
D [11/Feb/2011:12:44:36 +0100] [Job 24] renderer PID kid4=2802
D [11/Feb/2011:12:44:36 +0100] [Job 24] renderer command: gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=ijs -sIjsServer=hpijs -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792 -sDeviceManufacturer="HEWLETT-PACKARD" -sDeviceModel="deskjet 3320" -r300 -sIjsParams=Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=1 -dIjsUseOutputFD -sOutputFile=- -
D [11/Feb/2011:12:44:36 +0100] [Job 24] Starting process 2803: "gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=ijs -sIjsServer=hpijs -dDEVICEWIDTHPOINTS=6..."
D [11/Feb/2011:12:44:36 +0100] [Job 24] JCL: <job data>
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] PID 2796 (pdftops) exited with no errors.
D [11/Feb/2011:12:44:36 +0100] [Job 24] prnt/hpijs/hpijs.cpp 650: WARNING: color pen has low ink
D [11/Feb/2011:12:44:36 +0100] [Job 24] STATE: +marker-supply-low-warning
D [11/Feb/2011:12:44:36 +0100] [Job 24] GPL Ghostscript 9.00: Unrecoverable error, exit code 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process 2803 ending: "gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=ijs -sIjsServer=hpijs -dDEVICEWIDTHPOINTS=6..."
D [11/Feb/2011:12:44:36 +0100] [Job 24] renderer return value: 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] renderer received signal: 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process dying with "Possible error on renderer command line or PostScript error. Check options.", exit stat: 3
D [11/Feb/2011:12:44:36 +0100] [Job 24] error: Nie ma takiego pliku ani katalogu (2)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Cleaning up ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Killing process 2802 (KID4) with signal 15
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process dying with "Caught termination signal: Job canceled", exit stat: 0
D [11/Feb/2011:12:44:36 +0100] [Job 24] error: Przerwany potok (32)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Cleaning up ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Killing process 2801 (KID3) with signal 15
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process dying with "Caught termination signal: Job canceled", exit stat: 0
D [11/Feb/2011:12:44:36 +0100] [Job 24] error: (0)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Cleaning up ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process dying with "Caught termination signal: Job canceled", exit stat: 0
D [11/Feb/2011:12:44:36 +0100] [Job 24] error: Przerwane wywołanie systemowe (4)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Cleaning up ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Killing process 2802 (KID4) with signal 15
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] Closing foomatic-rip.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Killing process 2802 (KID4) with signal 9
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] Closing foomatic-rip.
D [11/Feb/2011:12:44:36 +0100] [Job 24] Killing process 2801 (KID3) with signal 9
D [11/Feb/2011:12:44:36 +0100] [Job 24] Caught termination signal: Job canceled
D [11/Feb/2011:12:44:36 +0100] [Job 24]
D [11/Feb/2011:12:44:36 +0100] [Job 24] Closing foomatic-rip.
D [11/Feb/2011:12:44:36 +0100] [Job 24] prnt/backend/hp.c 839: ERROR: null print job total=0
D [11/Feb/2011:12:44:36 +0100] [Job 24] PID 2797 (pstops) crashed on signal 13!
D [11/Feb/2011:12:44:36 +0100] [Job 24] End of messages
D [11/Feb/2011:12:44:36 +0100] [Job 24] printer-state=3(idle)
D [11/Feb/2011:12:44:36 +0100] [Job 24] printer-state-message="/usr/lib/cups/filter/pdftops failed"
D [11/Feb/2011:12:44:36 +0100] [Job 24] printer-state-reasons=marker-supply-low-warning
E [11/Feb/2011:12:45:56 +0100] [Job 22] Stopping unresponsive job!
E [11/Feb/2011:12:49:41 +0100] [Job 24] Stopping unresponsive job!
To be honest, it looks more like a Chinese poem rather than error log. I found this part the most disturbing:
D [11/Feb/2011:12:44:36 +0100] [Job 24] STATE: +marker-supply-low-warning
D [11/Feb/2011:12:44:36 +0100] [Job 24] GPL Ghostscript 9.00: Unrecoverable error, exit code 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process 2803 ending: "gs -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPAUSE -sDEVICE=ijs -sIjsServer=hpijs -dDEVICEWIDTHPOINTS=6..."
D [11/Feb/2011:12:44:36 +0100] [Job 24] renderer return value: 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] renderer received signal: 1
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process dying with "Possible error on renderer command line or PostScript error. Check options.", exit stat: 3
D [11/Feb/2011:12:44:36 +0100] [Job 24] error: Nie ma takiego pliku ani katalogu (2)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Cleaning up ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Killing process 2802 (KID4) with signal 15
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process dying with "Caught termination signal: Job canceled", exit stat: 0
D [11/Feb/2011:12:44:36 +0100] [Job 24] error: Przerwany potok (32)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Cleaning up ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Killing process 2801 (KID3) with signal 15
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process dying with "Caught termination signal: Job canceled", exit stat: 0
D [11/Feb/2011:12:44:36 +0100] [Job 24] error: (0)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Cleaning up ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Process dying with "Caught termination signal: Job canceled", exit stat: 0
D [11/Feb/2011:12:44:36 +0100] [Job 24] error: Przerwane wywołanie systemowe (4)
D [11/Feb/2011:12:44:36 +0100] [Job 24] Cleaning up ...
D [11/Feb/2011:12:44:36 +0100] [Job 24] Killing process 2802 (KID4) with signal 15
Anyone had such problems before? Just don't tell me this cursed device demands a sacrifice from freshly produced virgin paper sheets to chew on.
Other non-pdf documents print succesfully.just got hit with thie same error on my canon printer, and I was told I should try reinstalling the printer (not sure if that's meant for the driver or the actual printer in CUPS, but I intend to try both...
-
Unable to delete messages from queue.
I have a journaling rule setup to send mail to a archive appliance. I have two messages in my queue that are From Address:<> to my recipient (my archiver's email address). The journal rule works fine since it is working for all my users mail, but I have two messages stuck in my queue complaining that they could not be categorized and an event 9213 for MSExchangeTransport every 30 minutes.
"A non-expirable message with the internal message ID 7996 could not be categorized. This message may be a journal report or other system message. The message will remain in the queue until administrative action is taken to resolve the error. Other messages may also have encountered this error. To further diagnose the error, use the Queue Viewer or the Mail Flow Troubleshooter."
I have tried via the GUI and Shell to remove these two messages. The GUI gives me an error:
Microsoft Exchange Error
Action 'Remove (with NDR)' could not be performed on object 'RE: Test to determine if email can be delivered & Received'.
RE: Test to determine if email can be delivered & Received
Failed
Error:
The requested operation can't be performed for the object with identity MyMailServerName\Submission\7999.
OK
The Shell will actually not report back an error but I still have those messages in the queue. The command to see info about the message was:
Get-Message -IncludeRecipientInfo | Where { $_.Recipients -Like "*[email protected]*" } | Format-List
Then I tried deleting the message using the "InternetMessageID" info I gathered from this.
Remove-Message -Filter {InternetMessageID -eq "[email protected]"} -WithNDR $false
This prompts me for a Yes, No, etc... responce (I thought I had it this time) and gave me no error, but the message still resides in queue.
I am at a loss. Any help?Correct, two messages stuck in queue and cannot remove.
Environment is a Windows 2003 R2 w/ SP2 64bit server, Exchange 2007 SP1 with all roles, AD/DNS is also Windows 2003 R2 w/ SP2 64bit.
This just seemed to start happening a few days ago and just with these two particular messages. I have a archive appliance from ArcMail and a journal rule setup in Exchange to journal all mail to the ArcMail appliance. This has been working and continues to work except for these two messages.
[PS] C:\>Get-Message -IncludeRecipientInfo | Where { $_.Recipients -Like "*[email protected]*" } | Format-List
Identity : CO-MAIL1\Submission\7996
Subject : RE: Test to determine if email can be delivered & Received
InternetMessageId : <[email protected]>
FromAddress : <>
Status : Retry
Size : 29638B
MessageSourceName : Journaling
SourceIP : 255.255.255.255
SCL : 0
DateReceived : 9/18/2008 1:39:34 PM
ExpirationTime :
LastError : Categorization failed. The message will be deferred and ret
ried because it was marked for retry if rejected.
RetryCount : 0
Queue : CO-MAIL1\Submission
Recipients : {[email protected]}
IsValid : True
ObjectState : Unchanged
Identity : CO-MAIL1\Submission\7999
Subject : RE: Test to determine if email can be delivered & Received
InternetMessageId : <[email protected]>
FromAddress : <>
Status : Retry
Size : 29623B
MessageSourceName : Journaling
SourceIP : 255.255.255.255
SCL : 0
DateReceived : 9/18/2008 1:39:34 PM
ExpirationTime :
LastError : Categorization failed. The message will be deferred and ret
ried because it was marked for retry if rejected.
RetryCount : 0
Queue : CO-MAIL1\Submission
Recipients : {[email protected]}
IsValid : True
ObjectState : Unchanged
Domain Controller Diagnosis
Performing initial setup:
Done gathering initial info.
Doing initial required tests
Testing server: co-site\CO-DNS1
Starting test: Connectivity
......................... CO-DNS1 passed test Connectivity
Doing primary tests
Testing server: co-site\CO-DNS1
Starting test: Replications
......................... CO-DNS1 passed test Replications
Starting test: NCSecDesc
......................... CO-DNS1 passed test NCSecDesc
Starting test: NetLogons
......................... CO-DNS1 passed test NetLogons
Starting test: Advertising
......................... CO-DNS1 passed test Advertising
Starting test: KnowsOfRoleHolders
......................... CO-DNS1 passed test KnowsOfRoleHolders
Starting test: RidManager
......................... CO-DNS1 passed test RidManager
Starting test: MachineAccount
......................... CO-DNS1 passed test MachineAccount
Starting test: Services
......................... CO-DNS1 passed test Services
Starting test: ObjectsReplicated
......................... CO-DNS1 passed test ObjectsReplicated
Starting test: frssysvol
......................... CO-DNS1 passed test frssysvol
Starting test: frsevent
......................... CO-DNS1 passed test frsevent
Starting test: kccevent
......................... CO-DNS1 passed test kccevent
Starting test: systemlog
......................... CO-DNS1 passed test systemlog
Starting test: VerifyReferences
......................... CO-DNS1 passed test VerifyReferences
Running partition tests on : ForestDnsZones
Starting test: CrossRefValidation
......................... ForestDnsZones passed test CrossRefValidation
Starting test: CheckSDRefDom
......................... ForestDnsZones passed test CheckSDRefDom
Running partition tests on : DomainDnsZones
Starting test: CrossRefValidation
......................... DomainDnsZones passed test CrossRefValidation
Starting test: CheckSDRefDom
......................... DomainDnsZones passed test CheckSDRefDom
Running partition tests on : Schema
Starting test: CrossRefValidation
......................... Schema passed test CrossRefValidation
Starting test: CheckSDRefDom
......................... Schema passed test CheckSDRefDom
Running partition tests on : Configuration
Starting test: CrossRefValidation
......................... Configuration passed test CrossRefValidation
Starting test: CheckSDRefDom
......................... Configuration passed test CheckSDRefDom
Running partition tests on : lcsd
Starting test: CrossRefValidation
......................... lcsd passed test CrossRefValidation
Starting test: CheckSDRefDom
......................... lcsd passed test CheckSDRefDom
Running enterprise tests on : lcsd.local
Starting test: Intersite
......................... lcsd.local passed test Intersite
Starting test: FsmoCheck
......................... lcsd.local passed test FsmoCheck
[PS] C:\>Remove-Message -filter {FromAddress -eq "<>"} -withNDR $false -debug -verbose
VERBOSE: Remove-Message : Beginning processing.
Confirm
Are you sure you want to perform this action?
Removing the messages that match filter "FromAddress -eq "<>"".
Yes Yes to All No [L] No to All Suspend [?] Help
(default is "Y"):Y
VERBOSE: Remove-Message : Ending processing.
[PS] C:\>Remove-Message -Filter {InternetMessageID -eq "[email protected]"} -WithNDR $false -debug -verbose
VERBOSE: Remove-Message : Beginning processing.
Confirm
Are you sure you want to perform this action?
Removing the messages that match filter "InternetMessageID -eq
"[email protected]"".
Yes Yes to All No [L] No to All Suspend [?] Help
(default is "Y"):Y
VERBOSE: Remove-Message : Ending processing.
[PS] C:\>Remove-Message -filter {FromAddress -eq ""} -withNDR $false -debug -ver
bose
VERBOSE: Remove-Message : Beginning processing.
Confirm
Are you sure you want to perform this action?
Removing the messages that match filter "FromAddress -eq """.
Yes Yes to All No [L] No to All Suspend [?] Help
(default is "Y"):Y
VERBOSE: Remove-Message : Ending processing.
[PS] C:\>
Tried several filter options and all had the same result. No events in the event viewer and did not remove the stuck messages. -
How do I set up a filter to stop relayed mail?
How do I set up a filter to stop relayed mail?
Unsolicited Bulk E-mail (UBE) is electronic mail sent to large numbers
of recipients without their knowledge or consent, usually advertising commercial
products or services. It is the electronic equivalent of paper "junk
mail", and is commonly referred to as Spam.
<P>UBE is usually just a nuisance, but the volume of UBE received at a
certain site can at times become so onerous that business-critical functions
are affected. This is especially true when UBE is used maliciously
to produce a denial of service attack, where a mail server is inundated
with UBE and crashes because of the load. Another common UBE problem
is when a mail server is used as a relay for UBE, so that a particular
server spends all its time routing e-mail that isn't destined for its
users. Some ISPs have reported that their mail servers have been
hard coded into certain spam programs, so that they are constantly being
used as a relay. Not only does this slow down their mail service
locally, but sometimes other ISP's will identify the afflicted ISP as a
source of spam and begin to block messages, legitimate and spam alike,
coming from that ISP. ISP's often name UBE as their number one problem,
preventing them from providing fast, reliable service.
<P>For a full definition of UBE see http://www.imc.org/uce-def.html
(Unsolicited Bulk Email: Definitions and Problems).
<P>Messaging Server 3.5 Hosting Edition supports powerful filtering capabilities
on messages as they are received by the server. Various criteria
can be applied to incoming messages, including testing on number of recipients,
sender domain or IP address, messages being relayed, and more. Messages
can then be bounced, dropped, or reviewed by an administrator before being
delivered. Providers can filter out unwanted mail at the source or block
a third party from using their messaging server for relaying email.
<P><B>UBE Filters Functionality Overview</B>
<P>The UBE filter is a plugin for Netscape Messaging Server 3.5. It works
by examining all incoming mail before it is routed throughout the system
(to users mailboxes or to other email servers). The UBE filter uses a set
of rules (also known as filters) to decide what to do with each piece of
mail. The filters are used to trap specified types of mail.
Mail that is trapped can be rejected, forwarded to a specific mailbox (e.g.,
the postmaster), deleted, or altered in some way. Mail that "passes"
all the filters continues on its normal course.
<P>Filters can be set up two ways, either using the straight forward Graphical
User Interface (GUI) or by setting up the filters directly in the filter.cfg
file. Generally, one would use the GUI interface for simple, one
line filters. To set up more complicated, multi-part filters, editing
the <I>filter.cfg</I> file directly would be faster. Both methods
are accessed via the Messaging Server Admin tool, under Plug-ins.
The following discussion gives some high level examples of how to set up
simple filters using the GUI and via the <I>filter.cfg</I> file.
For detailed information on how to set up and configure the UBE Filter
plug-in, see chapter 5 of the online help, or http://home.netscape.com/eng/Messaging/guide35/ch5.htm#Controlling
unsolicited bulk email (UBE).
<P><B>Setting Up UBE Filters with the GUI</B>
<P>The following screen shot shows a simple UBE filter being set up using
the UBE GUI. What is being set up is a filter to check all incoming
messages to see if they come from a domain that has been a regular source
of UBE. In this case, the name of the offending domain is "spammer.com".
So, each message that comes in has its "From" field checked to see if
it is from "spammer.com". If it is, the action is REJECT, meaning
the message is bounced back to the sender, with the appended message "I
don't accept mail from spammer.com".
<P>
<BR>
<P>Any field in the message can be examined, with some of the most popular
including the Subject, To, and Cc fields. Any regular expression
can be placed into the Value field, thus allowing the filter to check for
various conditions, including containment of a particular phrase (e.g.
Subject includes "make money"), or number of recipients (e.g., if greater
than 100, REJECT). For more information on how to write regular expressions,
see http://home.netscape.com/eng/Messaging/guide35/ch5.htm#Controlling
unsolicited bulk email (UBE)
<P>There are a number of actions that can be taken on a trapped message.
The most common are forwarding to a "watchdog" account such as the postmaster,
rejection, and deletion. But, in addition, programs such as virus
checking can be run on a message to trap infected messages.
<P><B>Setting Up UBE Filters by editing the <I>filter.cfg</I> file</B>
<P>In the above example, the filter that was set up was converted to a
short filter script that looked as follows:
<P>Channel-From ".*@spammer.com" REJECT
"I don't accept mail from spammer.com"
<P>This can also be directly entered into the <I>filter.cfg</I> file by
choosing the option "Edit Config File" from the UBE Page. This becomes
interesting for more complicated filters that require more than one filter
line. The following example shows a set of filters that were set
up to check for various conditions. For example, the fifth
and sixth line down is a filter that checks messages for viruses.
<P>
<BR>
<P><B>Using the UBE Filter for Anti-Relay</B>
<BR>
<P>One of the most requested needs of the new UBE filters supported in
Messaging Server 3.5 is to provide "anti-relay", i.e., to stop UBE which
is from an outside domain and destined for another outside domain.
In these cases, the mail is usually UBE and is relaying to hide the source
of the original spammer.
<P>There are two possible scenarios for anti-relay. One is where
there is a separate machine outside the firewall that checks for e-mail
for its domain. The other scenario is when there is only one machine
handling both internal and external traffic.
<P><I>Scenario One: Separate machines used for internal and external
mail</I>
<P>Outside of the firewall are mail servers that handle all incoming mail
from the internet. Internal users connect to mail servers inside
of the fire wall. The scenario looks like this:
<BR>
<P>What we want to allow is users 1 and 2 (U1 and U2) to send mail anywhere
but X1 and X2 should only be allowed to send mail to our servers.
<P>Solution:
<P>On the External Mail Server create a filter script that checks the Channel-to
header for domains that are internal to us. Allow these through and
reject all other mail. E.g., the filters would look as follows:
<BR>
<UL># if the mail is bound for domain1 or domain2 then exit the script
(and allow the mail to continue)
<BR>Channel-To "domain1.com" EXIT
<BR>Channel-To "domain2.com" EXIT
<BR># otherwise reject it outright ($ANY means any header and .* means
it has any text)
<BR>$ANY ".*"
REJECT "This machine only accepts mail bound for domain1.com or domain2.com"</UL>
We don't need to do anything on the internal server since only our users
can get to it (because of the firewall) and we want to allow them to send
and receive any and all mail.
<BR>
<P><I>Scenario 2: Single machine used for internal and external mail</I>
<P>In this scenario the same machine is used for both internal and external
connections. The problem we face here is that we need to allow the
local users to send mail outside our domains but not allow external users
to do the same. Note: This set up is not generally recommended, since it
makes the Messaging Server open to external attacks.
<BR>
<P>Here, we want to allow U1, U2 and U3 to send anywhere and X1 and X2
to send to domain1 or domain2 only.
<P>Solution:
<P>The solution in this case is to put the same script as scenario 1 on
the server but pre-pend it with lines that check for a connection from
the internal domains. If the connection is from our users it must
be from certain IP addresses, say 128.128.128.* or 128.128.129.*, so we
look for that. If it's not from one of these two IP addresses, then
it must be from outside and we apply the same logic as in scenario 1.
<BR>
<UL>#if the connection is from our internal domains then exit the script
(and allow the mail to continue)
<BR>Host-From "128\.128\.128\." EXIT
<BR>Host-From "128\.128\.129\." EXIT
<BR># if the mail is bound for domain1 or domain2 then exit the script
(and allow the mail to continue)
<BR>Channel-To "domain1.com" EXIT
<BR>Channel-To "domain2.com" EXIT
<BR># otherwise reject it outright ($ANY means any header and .* means
has any text)
<BR>$ANY ".*" REJECT "This machine only accepts mail bound for domain1.com
or domain2.com"</UL>I agree anti-relay can be using UBE feature. However, there is serious problem in reject the spam mail. My nms is using UBE feature to stop spam mail. According to the work flow of the UBE, the mail is received by nms completely and UBE is going to invesgate the mail address. Although UBE can stop the spam mail, the spam mail have a trouble in returning the mail to the sender. The reason is the sender address is usually not existed in the world. That will cause a lot of mail waiting in the mail queue.
In my experience, do not use UBE for anti-relay. -
Data acquisition loop with queue
What I would like to do is have a data acquisition loop that samples a load cell at 500Hz and have another loop that runs much slower to run a state machine and display some data in real time. The reason I want to sample the load cell so fast is to filter out some noise. Making producer/consumer loops with a queue kind of makes sense but I don't really care about all of the samples, I just want to be able to read a real time filtered signal at certain times. I looked at having just two parallel loops, one to acquire the data and the other to run a test and retrieve a real-time signal when I want but not sure how to pass data between the loops without using a queue. You can do it with local variables but you are at risk of a race condition. I hope this make sense. I am sure this is a simple problem I just don't know what direction to go. Thanks
Good Evening secr1973,
It sounds like you are on the right track. You already know about the producer/consumer architecture; this is almost always the first step to the separation that I think you are after.
The step that I think you are missing is a Case Structure around the enqueue element VI. You likely have some event or specific pattern that you are looking for in the input signal. You can have the output from this algorithm (likely a boolean) determine which case of the Case Structure to execute (Case 1: enqueue the element or Case 2: Do not enqueue the element).
This, of course, leads to processing being done in the producer loop, which is quite the opposite of what you are trying to accomplish with the producer/consumer architecture. You will have to decide if your processing is very simple or more complicated.
If it is easy/fast, you can likely get away with doing this processing in the producer loop. My guess is that your program falls under the category of do-it-all-in-the-producer loop because you are only acquiring at 500 Hz.
If the application requires faster acquisition rates or if the logic is going to require some processing, you may want to implement a double layer producer/consumer architecture. In this setup, you would pass all of the data from the DAQ producer to a second loop (using queue #1) that determines what to do with the data (to enqueue or not to enqueue...) and, if appropriate, write to a queue (queue #2) that the third loop can read. The third loop would be where your state machine executes.
If you have a quad core machine, each of these steps will execute on its own core. If not, you will have a little more thread swapping; not a huge concern in most cases. Here, we get into the art of programming more than the science.
In any event, I think you will be OK with a little processing for the enqueue or not algorithm in the producer loop.
Regards,
Charlie Piazza
Staff Product Support Engineer, RF
National Instruments
Maybe you are looking for
-
How to load Test data from a Text file in ECATT
Hi, I have created a test configuration with a test script, system data container, and test data container. I have done the recording of a transaction and created the script. Parameterization is done for the script and have imported those parameters
-
can someone please help me. my grandson accidently locked his iphone. i have try to reconnect it with itunes in order to restore it. But it won't do anything except have screen showing ipphone disable connect to itunes when i do itunes says please al
-
My iPhone 3GS keeps showing I have app updates but when I go to App Store It tells me all apps are up to date. Also when I select purchased apps It just gives me a blank page.
-
Different behaviours when exporting pdf
hi, i'm facing a strange behaviour when trying to export a pdf that is generated from db. i want to make pdfs available via dialog box. i set disposition to attachment in the response header. whereas FireFox shows the dialog box (as expected), IE ren
-
I have tried to install Lion on a Pro. 80% download without incident, then it raises a cancellation dialog box. When I cancel the cancellation (twice) it aborts the download as if I had cancelled it. Can't get the whole OS to download to this drive