|This article is about the current version of DF.|
Miasma is a cloud of purple stench that makes your dwarves unhappy. It only occurs in subterranean areas - (specifically, Dark Subterranean tiles; whether a tile is Inside or Outside makes no difference), and is caused by rotting items. It does not pass through closed doors.
Often a job in a kitchen, still or farmer's workshop will be canceled with the announcement ...needs unrotten (item). That doesn't mean you only have rotten ones, it means there is not an appropriate item that is available. Items that are forbidden, marked for dumping, or that have no path will be disregarded for workshop tasks.
Body parts of living dwarves may also be marked as rotten if they are affected by a syndrome that causes necrosis. The afflicted body part produces miasma from time to time.
Prepared food will rot the same as meat, cheese, eggs, and prepared fish, but plants will wither instead of producing miasma. The only place where food will not rot is in a stockpile, in a trade depot, in the embark wagon, in a minecart, when used as a reaction component, or while being carried by a dwarf, caravan pack animal, or wagon. Additionally, eggs will not rot in a nest box. It does not matter if the food is in a container; a barrel or large pot full of meat left in a corridor will rot. While you'd expect milk, fat, and tallow to rot also, it seems that they do not, nor, similarly, do any of the other categories of food, including flour, drinks, seeds, and rock nut paste. Raw fish will rot no matter where they're stored, which is why it's important to prepare fish as quickly as possible.
Once miasma has been generated (there is a purple square), it will spread for a while, eventually disappearing. This is true even if the original source has been removed: you can still have a spreading cloud of miasma even after you've cleaned up the dead goblin or whatever. The spread of miasma is only north, south, east, west, up, or down. It will not pass through diagonal openings. It will pass through open doors, open floor hatches, and all grates.
To avoid miasma, either keep anything rotten above ground, or alternatively have a subterranean refuse pile on its own in a room with several doors; this should halt the miasma's advance (although the room itself will still stink up). It will also not spread diagonally, so one possible solution is to have the only entrance be diagonal.
Alternately, excavate the roof of your refuse pile/butcher's shop/fishery so that it is open to the surface, then build a floor over it. The tiles underneath will forever count as "Light Above Ground" and therefore will not generate miasma. (For style points use a transparent roof.) See tile attributes for more information.
Another option is to have a long garbage chute where refuse is dumped down. If it is long enough, the miasma will not be able to reach all the way to the top, preventing your dwarves from getting unhappy thoughts.
A creative way of constructing garbage chutes is to separate the garbage area and dumping area (where dwarves are) with hatches linked to a pressure plate. That way garbage will land on the hatch, which will open (triggered by dwarf returning to his duties stepping on a plate), letting it fall down and then close, keeping all the miasma inside. This allows one to construct a short, yet non-smelly chute.
Another option for a short non-smelly chute is to let the chute be separated diagonally from the dumping square(s). Since miasma does not travel across corners, this allows a chute stretching across 2 z-levels to be completely miasma free, without needing additional mechanisms.
Example #1 WWWWWWW W=Wall WWWWWOW .=Floor ....-WW O=Channel WWWWWWW -=Floor with dumping zone
Example #2 WWWWWWW W=Regular Wall .=Regular floor WWWWMQW M=Wall with dumping zone ....--W Q=Channel with dumping zone WWWWWWW -=Floor with dumping zone
If you do encounter miasma coming from a kitchen, you can stop more by deconstructing the kitchen and making the area the kitchen was in a food stockpile. Miasma from a kitchen is (likely) caused by cooked food being left inside the kitchen because of not having food containers to put it in. Butcher shops suffer from the same problem.
Note that dwarves interrupted in mid-meal will abandon their food. Food abandoned in this manner can never be interacted with (picked up, stored, or dumped) by any dwarf ever again, including the dwarf who abandoned it. Bug:1299 If the food is abandoned underground, it will eventually rot and generate miasma. This is an especially frequent occurrence with soldiers, who will often be interrupted while consuming their rations when a training class begins. One workaround for soldiers is to use the military supplies tab to prevent them from carrying food.
The utility DFHack includes a command "cleanowned" to clear ownership and dump all owned items that are on the floor or rotting. This can help if you're dealing with miasma from this bug.