We propose an Alarm Filtering Algorithm (AFA) for the fault management of an optical network that supports multiple failures and works in the presence of passive elements, that is, network elements which may fail but never generate an alarm (e.g. optical fibres). The algorithm provides a list of components whose failure explain the observed alarms. It avoids the use of failure probabilities, which are difficult to estimate, and does not need a global knowledge of the network topology. Moreover it also tolerates alarm losses and false alarms. The algorithm is tailored to the specific behaviour of the hardware components of an optical network when a failure occurs. The classification of the network components according to the alarm signals they generate enables a formalisation of the alarm-filtering problem and results in an efficient algorithm for localising the failure(s). This algorithm is applied to the WDM rings of the COBNET network (COBNET is a European ACTS project) and to a meshed optical network with the ARPA2 topology.